как конвертировать текст в ISO-8859-1 ?

Discussion in 'PHP' started by Дикс, 2 Oct 2009.

  1. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    файл в UTF-8:

    PHP:
    $text "русский в утф";
    header('Content-type: text/html; charset=ISO-8859-1');
    echo 
    "<meta http-equiv='content-type' content='text/html; charset=ISO-8859-1' />";
    echo 
    mb_convert_encoding($text'ISO-8859-1''UTF-8');
    выводит кашу
    что не так?
    в браузере сайты с ISO-8859-1 отображаются нормально
     
  2. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    И где же в исо 8859-1 кириллица?
    ISO 8859-5
     
  3. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    но форум то в 8859-1 и нормально все отображает

    а так не канает:
    PHP:
    $text "русски в утф";
    header('Content-type: text/html; charset=ISO-8859-5');
    echo 
    "<meta http-equiv='content-type' content='text/html; charset=ISO-8859-5' />";
    echo 
    mb_convert_encoding($text"ISO-8859-5");
     
  4. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    из cp-1251 в ISO-8859-5 нормально конвертит
    а из utf-8 в ISO-8859-5 --- нет
     
  5. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    В последней строке кода потерялся UTF-8
     
  6. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    это необязательный параметр
     
  7. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Может, и необязательный, но без него не будет работать
    PHP:
      $text 'русский в утф';
      
    header ('Content-type: text-html; charset=ISO-8859-5');
      echo 
    "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-5\">";
      echo 
    $text "<br>";
      echo 
    mb_convert_encoding ($text'ISO-8859-5''auto');
    ЗЫ. Необходимости юзать малораспространенную кодировку в рунете вообще не вижу
     
  8. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    тем не менее она есть
     
    1 person likes this.
  9. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    объясните пожалуйста, как тогда я размещаю руками сообщение нормальными русскими буквами на форум, у которого кодировка ISO-8859-1 ? а если скриптом - то всякая хрень
     
  10. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    помогите кто-нибудь с этой кодировкой - я готов заплатить
     
  11. Doom123

    Doom123 Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    попробуй http://il.php.net/manual/en/function.iconv.php
     
  12. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    $title = iconv("UTF-8", "ISO-8859-5//IGNORE", $title);
    $message = iconv("UTF-8", "ISO-8859-5//IGNORE", $message);

    c ISO-8859-5 ещё при выводе на экран из файла в utf-8 - видно русский текст
    а при отправке на форуме закорючки

    а если ISO-8859-1 - то вообще строки из одних пробелов
     
  13. Doom123

    Doom123 Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    посмотри в каком виде отправляются данные .. у меня както была трабла что при отрпаке из формы текст отсылался ввиде html эквевилентов .. тоесть вместо букв были ихние хтмл коды и при выводи была трабла ... или же кодировка самого файла со скриптом не соответствует .. хз
     
  14. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    я вот и смотрю что браузер отправляет как раз html-эквиваленты
     
  15. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    ***! я все-таки сделал это!

    PHP:

    function unicode_mk_cyr($str) {
         
    $encode "";

         for (
    $ii=0;$ii<strlen($str);$ii++) {
             
    $xchr=substr($str,$ii,1);
             if (
    ord($xchr)>191) {
                 
    $xchr=ord($xchr)+848;
                 
    $xchr="&#" $xchr ";";
             }
             if(
    ord($xchr) == 129) {
                   
    $xchr "Ѓ";
             }
             if(
    ord($xchr) == 163) {
                   
    $xchr "Ј";
             }
             if(
    ord($xchr) == 138) {
                   
    $xchr "Љ";
             }
             if(
    ord($xchr) == 140) {
                   
    $xchr "Њ";
             }
             if(
    ord($xchr) == 143) {
                   
    $xchr "Џ";
             }
             if(
    ord($xchr) == 141) {
                   
    $xchr "Ќ";
             }
             if(
    ord($xchr) == 189) {
                   
    $xchr "Ѕ";
             }

             if(
    ord($xchr) == 188) {
                   
    $xchr "ј";
             }
             if(
    ord($xchr) == 131) {
                   
    $xchr "ѓ";
             }
             if(
    ord($xchr) == 190) {
                   
    $xchr "ѕ";
             }
             if(
    ord($xchr) == 154) {
                   
    $xchr "љ";
             }
             if(
    ord($xchr) == 156) {
                   
    $xchr "њ";
             }
             if(
    ord($xchr) == 159) {
                   
    $xchr "џ";
             }
             if(
    ord($xchr) == 157) {
                   
    $xchr "ќ";
             }
             
    $encode=$encode $xchr;
       }
         return 
    $encode;
    }
    $title urlencode(unicode_mk_cyr($title));
    $message urlencode(unicode_mk_cyr($message));
    функцию взял из комментов php.net
     
  16. Doom123

    Doom123 Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    это не выход .. такое происходит когда вводимы текст не соответствует кодировке страницы (или чтото типо того) легче перевести всё в ut8 разве нет?
     
    #16 Doom123, 2 Oct 2009
    Last edited: 2 Oct 2009