кирилица в DOMXML

  • Автор темы TilloWolff
  • Дата начала

TilloWolff

Guest
кирилица в DOMXML

совсем уже замучился :(
через DOMXML добавляю child с русским текстом в XML-файл, а там появляются коды символов....&#xA1.....
это кодировку надо менять или символы кодировать(раскодировать)? тут как-то это уже обсуждалось, только у меня не сработало....
 

Flying

Guest
По умолчанию libxml2, который используется PHP DOMXML "знает" только кодировки utf-8 и iso-8859-1. Поэтому вариантов у тебя 2:
1. Скомпилировать libxml2 с поддержкой iconv.
2. Использовать модуль PHP iconv для конвертации всех данных, вставляемых в DOMXML в utf-8

Лично я использую второй путь, проблем не наблюдается.
 

wanderer

PHP - rulez!...
а по-подробней про второй путь, плз! а то я тоже ничего не понимаю! и самое интересное! у вас-то он хотяб пишет! а у меня он вообще обрывает запись! от начала русского текста и доконца, независимо от того есть ли там ещё англ. текст!!!
 

Flying

Guest
PHP:
$child = $node->new_child('child',iconv('windows-1251','utf-8','тут текст по-русски'));
 

Flying

Guest
Автор оригинала: vovik

при этом еще надо создать саму хмлку в windows-1251
Зачем? Как раз она-то должна быть в UTF-8.

PHP:
$xml = xmldoc('<?xml version="1.0" encoding="utf-8"?><root/>');
 

vovik

Guest
Автор оригинала: Flying

Зачем? Как раз она-то должна быть в UTF-8.

PHP:
$xml = xmldoc('<?xml version="1.0" encoding="utf-8"?><root/>');
ну тогда в $xml->dumpmem() и будут эти самые &xxx;
хотя эксплорер, конечно, отобразит их нормально ...
 

vovik

Guest
Автор оригинала: wanderer
может конечно глупый вопрос, но! обязательно вот здесь:
ИМЕННО русский текст должен быть?????
можно и английский :)
 

wanderer

PHP - rulez!...
ещё прикол - iconv - говорит не знает функцию!
какую библ надо (под МАСТ_ДАЙ)???
 

Flying

Guest
iconv.dll, php_iconv.dll и включить поддержку в php.ini
 

wanderer

PHP - rulez!...
аааааааааааа - ну и что это такое?????
подразумевалось "аааааааааааа"
 

Flying

Guest
в смысле - "что такое"? Именно твое "аааааааааааа" в кодировке utf-8, как ты и просил.
 

TilloWolff

Guest
ничего не понимаю :(
сделал так как писали -- сперва допустим
$newsNode->new_child('title', iconv('windows-1251','utf-8',$title));
затем во время загрузки XML-файла $str = iconv('utf-8','windows-1251',$str);
после чего echo $str выводит : `oa~n`o, а должно быть тест :(((

....видать торможу или руки такие...
 

TilloWolff

Guest
если не трудно объясните такую вещь:
кодирую в UTF-8.. в редакторе смотрю XML-файл -- там такая строка:
&#xF2;&#xE5;&#xF1;&#xF2;
это представление строки "тест" в UTF-8 (наверное)
после такой вот функции:

function stringdecode($string)
{
$ret_string = "";
$arr = explode("&#", $string);
$count = count($arr);
$x = 1;
while ($x < $count)
{
$hex = ereg_replace("(.*);", "\\1", $arr[$x]);
$chr = chr(hexdec($hex));
$ret_string .= $chr;
$x++;
}
return $ret_string;
}

echo stringdecode($error_str);

... действительно в браузер выдается строка "тест", т.е. такого значение
возращаемое значение функции stringdecode($string), но(!!)
если то же самое проделать в результате парсеринга XML-файла, т.е.
$str = iconv('utf-8','windows-1251',$str);
то $str имеет совсем другое значение...

А если использовать при парсеринге вышеописанную stringdecode, то
в браузер выдаются пустые строки (это рассматривается только при
наличии русского текста)

В чем причина такого поведения?
 
Сверху