Проблема с акцентом в DOMDocument между разными версиями php


У меня есть старое большое приложение на php, которое использует XML (DOMDocument).
Приложение работает на PHP 5.2.5

$dom = new DOMDocument("1.0", "iso-8859-15");  
$dom->formatOutput = true;  
...  
$node->setAttribute('attr', 'value_with_éàè');  
$str = $dom->saveXML(); 

$str отправляется в Flex, и все работает нормально.

Теперь нам нужно сменить наш сервер. Новая версия PHP - 5.2.13.
В этой версии происходит сбой функции setAttribute. (Строка не является utf-8.....)
И если я посмотрю $str, строка обрезается при первом акценте.

Код работает, если я использую utf8_encode для атрибутов. Проблема в том, что потребуется много времени, чтобы разобрать код и добавить utf8_encode.....
Я ищу переменную, флаг или что-то еще, чтобы приложение работало как старая версия php.

Есть ли какой-то трюк?

 4
Author: lord_t, 2011-05-10

1 answers

Был там. Я чувствую твою боль. Проблемы с кодировкой символов сами по себе являются проблемой. Добавьте в этот набор MySQL, php и веб-сервер, и у вас возникнут некоторые серьезные проблемы.

Во-первых, можно настроить набор инструментов для использования IS0-8859-15.

Вы должны убедиться, что ВСЕ используемые вами инструменты, php, сервер mysql, mysql-клиент (настраивается через my.conf или на php) и веб-сервер настроены для этого набора символов. Вы также должны убедиться, что таблицы БД ISO-8859-15, не передавайте и не открывайте данные ни в чем, не настроенном для ISO-8859-15, например...( кашель кашель phpMyAdmin.)

Однажды у меня были проблемы, потому что я открыл дамп бд в своем редакторе UTF8 перед загрузкой в ISO-8859-1 БД, и просто открыв в редакторе и сохранив его повторно, повредил файл с преобразованием UTF8. Конечно, из-за этих проблем вам хочется биться головой о стену, но поверьте мне, выполните описанные выше действия, найдите инструмент, который использует UTF-8, начните с DB и идите оттуда вы сможете обслуживать эти специальные символы, не меняя свой код.

Удачи, друг.

 0
Author: stefgosselin, 2011-05-15 00:35:05