Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] Кодировка XML (http://forum.oszone.net/showthread.php?t=102603)

rus-4-ever 12-03-2008 01:11 758269

Кодировка XML
 
Здравствуйте, тут такая проблема....

Работаю с ХМЛ через ДОМ в РНР5...
Когда при редактировании файла ввожу английский текст-то всё норм!!!
Когда ввиде атрибуда пытаюс вставить русский текст-то вылетает ошибка

Цитата:

Warning: DOMDocument::save() [function.DOMDocument-save]: output conversion failed due to conv error, bytes 0xF4 0xFB 0xE2 0x22 in /home/docs/test1/change-xml.php on line 54
В итоге ХМЛ файл полностью стирается...

Подскажите, как можно Задавать атрибуты руским шрифтом?

Спасибо.

vadimiron 12-03-2008 10:00 758397

rus-4-ever,
С кодировками надо поиграться наверно. Вы кодировку задаёте
Я в инете нашёл пример (не знаю работает ли) - поиграйтесь с ним:
PHP код:

$xml = new DOMDocument('1.0''iso-8859-1');
$creatorTxt $xml->createTextNode(utf8_encode('Mickaël'));
$xml->save('rss.xml'); 


rus-4-ever 12-03-2008 13:07 758552

В том то и дело, что пересмотрел и все комбинации iconv() и utf8_encode(), но в некоторых случаях просто выводится абракадабра... А вот нормальный текст-не получается...
А в какой кодировке передаются данные формы? в той, которой страница была?

Если ничего не получится-придётся наверно через БД значения сохранять :(

bruder 12-03-2008 15:08 758657

а какая кодировка у xml файла? Должна быть WINDOWS-1251. У меня без ошибок в таком случае.

rus-4-ever 12-03-2008 21:04 758915

Так в том то и дело, что ХМЛ создает скрипт!!! а с нормальной кодировкой создавать не хочет!

bruder 12-03-2008 21:20 758928

не понял какой скрипт? В xml файле так стоит?
Код:

<?xml version="1.0" encoding="WINDOWS-1251" ?>

rus-4-ever 12-03-2008 21:51 758963

Всё, спасибо!!!
Помогла статья

http://ief.tup.km.ua/docs/php42/f/ref.xml.html

Фишка была в том, что внутренняя кодировка РНР UTF-8!!! Поэтому прежде чем сохранять надо было сделать utf8_encode(), а потом utf8_decode(), как и подсказали =)


Время: 08:48.

Время: 08:48.
© OSzone.net 2001-