За последние 24 часа нас посетили 59602 программиста и 1851 робот. Сейчас ищет 2161 программист ...

Кодировочки в xml

Тема в разделе "PHP для новичков", создана пользователем ShamahN, 17 май 2008.

  1. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Не врублюсь. Точнее врублюсь, но не пойму :( След код:
    PHP:
    1.  
    2. <?php
    3. $xmlstr = <<<XML
    4. <?xml version='1.0' encoding='WINDOWS-1251'?>
    5. <movies>
    6.  <movie>
    7.     <name>Коля</name>
    8.  </movie>
    9. </movies>
    10. XML;
    11.  
    12. $xml = new SimpleXMLElement($xmlstr);
    13.  
    14. $movie = $xml->addChild('movie');
    15. $movie->addChild('name','Петя');
    16.  
    17. print $xml->movie[0]->name; //Пишет Аброкадабры
    18. print $xml->movie[1]->name; //Пишет Петя
    19. print iconv('UTF-8','WINDOWS-1251',$xml->movie[0]->name); //Пишет Коля
    20. print iconv('UTF-8','WINDOWS-1251',$xml->movie[1]->name); //Пишет предупреждение [b]Notice: iconv(): Detected an illegal character in input string[/b]
    21. ?>
    22.  
    23.  
    В общем, я прострации...
     
  2. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    А как узнать в какой кодировке скрипт? :) честно говоря ниразу не задумывался :)
     
  3. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Скрипт в какой кодировке?
     
  4. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    При сохранении файла обычно указывается.
     
  5. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    У меня страшный редактор, который называется пхп эксперт едитор и там я не нашел в какой он мне кодировке штампует, но я же гений :):):) и открыл файлик в тоталкоммандере и перепробовал все кодировки какие есть. Во всех кроме ср1251 он выглядел неважно :) в общем кодировка скрипта - ср1251.
    Можете попробовать у себя, что он Вам напишет? :)
     
  6. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    ОООО... Нашел!! В этом редакторе стоит галочка ANSI. Это плохо, да? Там только анси и ютф-8 а мне бы хотелось windows-1251. Я безнадежен, да? :(
     
  7. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
  8. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    PHP:
    1. $movie->addChild('name', iconv('WINDOWS-1251','UTF-8', 'Петя'));
    попробуй.
     
  9. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    ANSI - это Miscrosoft так называет однобайтные кодировки. Т.е. в русской windows - это CP1251.

    А процесс тут следующий:
    1. Во время создания XML-объекта импортируется строка. Вне зависимости от указанной кодировки в <?xml encoding=""?> внутри себя объект хранит данные в UTF-8. И данные при добавлении ему надо передавать в UTF-8, и при извлечении перекодировать в нужную кодировку.

    Но проще всего всегда использовать UTF-8. Потом с XSLT будет проще работать.
     
  10. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Все понятно. Огромное спасибо, ну ОГРОМНОЕ. Вот только как теперь быть: На 4х сайтах кодировка ср1251, в базах данных, соответственно тоже, Да и скрипты, как мы выяснили, тоже в ней же...
    Что же теперь, чтобы перевести на xml, мне надо переконвертировать почти все...
     
  11. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    какой смысл тогда использовать ср1251? может быть, всем кто когда-то начинает, следует сразу говорить: никаких ср1251?
     
  12. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Привычка. 10 лет назад мало кто из редакторов понимал utf-8.
    Хотя, некоторые предъявляют еще аргумент типа «экономии трафика» (русские символы в два раза больше места занимают), но это, по-моему мало кого сейчас волнует.

    Сначала надо объяснить, что значит кодировка :)
    А все новые проекты лучше сразу делать в UTF-8. Когда-нибудь мы придем к почти идеальному миру, когда будет UTF-8 и два microsoft'овских полу-юникода. :)

    Можно сделать обертку для используемого SimpleXML, в методах которого прописать перекодирование в cp1251.
     
  13. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    AlexGousev
    Спасибо огромное. Вы опять помогли.
    Думаю, может всетаки повесить Какую-нить тему в основных про ето дело. Ибо сейчас пошукал в интернете про UTF-8 vs windows-1251 и в таком роде, но вразумительных ответов на то чем можно обосновать тот или иной выбор я не видел.

    А на счет новых проектов - буду иметь ввиду. Да и старые тоже завтра перетащу, благо на одном движке с одинаковой структурой БД.
    Еще раз СПАСИБО!