Не врублюсь. Точнее врублюсь, но не пойму След код: PHP: <?php $xmlstr = <<<XML <?xml version='1.0' encoding='WINDOWS-1251'?> <movies> <movie> <name>Коля</name> </movie> </movies> XML; $xml = new SimpleXMLElement($xmlstr); $movie = $xml->addChild('movie'); $movie->addChild('name','Петя'); print $xml->movie[0]->name; //Пишет Аброкадабры print $xml->movie[1]->name; //Пишет Петя print iconv('UTF-8','WINDOWS-1251',$xml->movie[0]->name); //Пишет Коля print iconv('UTF-8','WINDOWS-1251',$xml->movie[1]->name); //Пишет предупреждение [b]Notice: iconv(): Detected an illegal character in input string[/b] ?> В общем, я прострации...
У меня страшный редактор, который называется пхп эксперт едитор и там я не нашел в какой он мне кодировке штампует, но я же гений и открыл файлик в тоталкоммандере и перепробовал все кодировки какие есть. Во всех кроме ср1251 он выглядел неважно в общем кодировка скрипта - ср1251. Можете попробовать у себя, что он Вам напишет?
ОООО... Нашел!! В этом редакторе стоит галочка ANSI. Это плохо, да? Там только анси и ютф-8 а мне бы хотелось windows-1251. Я безнадежен, да?
ANSI - это Miscrosoft так называет однобайтные кодировки. Т.е. в русской windows - это CP1251. А процесс тут следующий: 1. Во время создания XML-объекта импортируется строка. Вне зависимости от указанной кодировки в <?xml encoding=""?> внутри себя объект хранит данные в UTF-8. И данные при добавлении ему надо передавать в UTF-8, и при извлечении перекодировать в нужную кодировку. Но проще всего всегда использовать UTF-8. Потом с XSLT будет проще работать.
Все понятно. Огромное спасибо, ну ОГРОМНОЕ. Вот только как теперь быть: На 4х сайтах кодировка ср1251, в базах данных, соответственно тоже, Да и скрипты, как мы выяснили, тоже в ней же... Что же теперь, чтобы перевести на xml, мне надо переконвертировать почти все...
какой смысл тогда использовать ср1251? может быть, всем кто когда-то начинает, следует сразу говорить: никаких ср1251?
Привычка. 10 лет назад мало кто из редакторов понимал utf-8. Хотя, некоторые предъявляют еще аргумент типа «экономии трафика» (русские символы в два раза больше места занимают), но это, по-моему мало кого сейчас волнует. Сначала надо объяснить, что значит кодировка А все новые проекты лучше сразу делать в UTF-8. Когда-нибудь мы придем к почти идеальному миру, когда будет UTF-8 и два microsoft'овских полу-юникода. Можно сделать обертку для используемого SimpleXML, в методах которого прописать перекодирование в cp1251.
AlexGousev Спасибо огромное. Вы опять помогли. Думаю, может всетаки повесить Какую-нить тему в основных про ето дело. Ибо сейчас пошукал в интернете про UTF-8 vs windows-1251 и в таком роде, но вразумительных ответов на то чем можно обосновать тот или иной выбор я не видел. А на счет новых проектов - буду иметь ввиду. Да и старые тоже завтра перетащу, благо на одном движке с одинаковой структурой БД. Еще раз СПАСИБО!