|
|
|
| Здраствуйте.
Подскажите пожалуйста, как правильно сделать отображение кирилицы в xml документе при использовании SimpleXml.
Например, делаю так:
header("Content-type: text/xml");
...
$dataXML = simplexml_load_string("<?xml version='1.0' encoding='windows-1251'?><doc></doc>");
$dataXML->addChild('name', 'Антон');
echo $dataXML->asXML();
|
Выдает ошибку...
Если изменить:
$dataXML->addChild('name', 'Anton');
|
Всё нормально.
Пробовал и koi8-r и iso-8859-5 - тоже ошибки.
Я что-то не так делаю или чего не понимаю? | |
|
|
|
|
|
|
|
для: AntonE
(15.10.2008 в 06:30)
| | А UTF-8 пробовали? | |
|
|
|
|
|
|
|
для: Саня
(15.10.2008 в 21:28)
| | А разве без utf-8 нельзя обойтись?.
Вроде бы вопрос простой, а ответа пока нет :(
Ребята, ну помогите, пожалуйста!
Еще раз. Вот, например, есть xml-документ:
<?xml version='1.0' encoding='windows-1251'?>
<person>
<name>Вася</name>
<family>Пупкин</family>
</person>
|
Загружаю документ и если добавляю новый узел, то выдает ошибку.
$dataXML = simplexml_load_file('fileName.xml');
$dataXML->addChild('newElem', 'Новый');
echo $dataXML->asXML();
|
Почему ошибка?
Если вместо "Новый", поставить, допустим "New", тогда всё хорошо.
Может надо как-то обработать сначала или еще что-нибудь сделать?
Подскажите пожалуйста. | |
|
|
|
|
|
|
|
для: AntonE
(15.10.2008 в 22:57)
| | >А разве без utf-8 нельзя обойтись?.
>Вроде бы вопрос простой, а ответа пока нет :(
Так и ответ простой. Штатная кодировка XML-контента - именно UTF-8 . Остальное от лукавого, и никем не гарантировано. | |
|
|
|
|
автор: # (16.10.2008 в 00:24) |
|
|
для: Trianon
(15.10.2008 в 23:27)
| | А зачем тогда вообще атрибут "encoding"? | |
|
|
|
|
|
|
|
для: Trianon
(15.10.2008 в 23:27)
| | Хорошо, будем тогда использовать UTF.
Но сразу возникла другая проблема.
Вот если я создаю файл xml в utf-8 кодировке, а в файле xsl стоит <xsl:output encoding='windows-1251'>, то результат же должен быть в windows-1251 кодировке?
Но у меня всеравно результат преобразования UTF-8.
Что за беда с этими кодировками :( | |
|
|
|
|
|
|
|
для: AntonE
(16.10.2008 в 04:24)
| | Вам же сказали:
"Так и ответ простой. Штатная кодировка XML-контента - именно UTF-8 . Остальное от лукавого, и никем не гарантировано."
Используйте всегда UTF-8 и никаких бед не будет. | |
|
|
|
|
|
|
|
для: coloboc66
(16.10.2008 в 10:30)
| | Извините пожалуйста, что я немного тугой, но что-то до меня плохо доходит.
Как я понял, UTF - это универсальная кодировка, созданная специально, чтобы можно было использовать символы различных языков. Т.е. это как бы кодировка-буфер, в ней просто "хранятся" данные, а затем, когда тебе нужно, допустим, вывести эти данные, ты указываешь нужную кодировку, например koi8-r.
Я правильно всё понимаю?
Дак вот у меня и проблема, допустим, если в БД хранятся данные в cp1251, запросом к БД я получаю xml документ в utf-8. Затем на странице я должен же указать, в какой кодировке я хочу получить эти данные? Я конечно указываю кириллицу, но на странице выводятся всякие ромбики.
Я неправильно понимаю саму суть в кодировках, или правильно понимаю, но просто что-то не так делаю в коде? | |
|
|
|
|
|
|
|
для: AntonE
(17.10.2008 в 12:46)
| | Неправильно вы понимаете.
Это никакой не буфер, это такая же кодировка как ср1251, только намного более универсальная.
Чтобы нормально работать с кодировкой UTF-8 нужно
1. Данные в БД хранить в UTF-8
2.На HTML-странице указать кодировку UTF-8
3. Данные в XML-документе хранить в UTF-8
4. Все файлы с вашим кодом сохранить в UTF-8 (Файл-сохранить как- указать кодировку UTF-8 , каталог и имя.)
Теоретически - да - если указать XML-файлу виндовс-1251, то всё должно работать, но реально не получается. Почему - Трианон указывал.
Или же попробуйте использовать функцию iconv() | |
|
|
|
|
|
|
|
для: coloboc66
(17.10.2008 в 15:05)
| | Создал пробную таблицу в utf-8.
Добавил запись с русскими буквами.
На странице указал utf-8.
В xml-документе тоже указал utf-8.
Получаю результат в виде ромбиков с знаками вопросами.
Пробовал на странице ставить мета в кириллице и хидеры везьде в кириллице ставил - всё равно ромбики.
А вот применение iconv() решила все проблемы :).
Спасибо, что подсказали эту функцию. Так же всем спасибо кто отвечал.
Тема закрыта. | |
|
|
|
|
|
|
|
для: AntonE
(17.10.2008 в 16:40)
| | Файл-сохранить как- указать кодировку UTF-8 , каталог и имя. - А это делали?
Зря вы прицепились к кодировке 1251 - устарела она уже. | |
|
|
|