Специальные символы из файла XML не отображаются правильно с использованием php - PullRequest
1 голос
/ 03 февраля 2012

Это может быть глупый вопрос, но дело не в том, что я могу найти, а в том, что я не знаю, что искать.Есть некоторые специальные символы, которые не отображаются правильно в php.Я беру некоторую информацию из файла XML и повторяю их.

т.е.:

должно быть -> Nürnberg

повторяется как -> Nürnberg

любые советы о том, что искать, или как решить эту проблему?

Ответы [ 6 ]

1 голос
/ 03 февраля 2012
1 голос
/ 03 февраля 2012
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"  />
0 голосов
/ 03 февраля 2012

Существует несоответствие между кодировкой символов вашего XML и тем, что вы выводите из PHP.Скорее всего, один - UTF-8, а другой - ISO-8859.

На стороне PHP вы можете установить это с помощью директивы заголовка

<?php
header('Content-Type: text/plain; charset=ISO-8859-1');
header('Content-Type: text/plain; charset=utf-8');
?>

и / или в выведенном HTML

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

На стороне XML большинство качественных текстовых редакторов позволяют указывать кодировку символов при сохранении файла.(Например, WordWrangler на Mac)

Если XML-файл действительно находится в ISO-8859, вы можете использовать utf8_encode(), чтобы преобразовать его в UTF-8 во время чтения.

Углубленное обсуждение PHP и кодировки символов .

0 голосов
/ 03 февраля 2012

«Я беру некоторую информацию из XML-файла и выводю ее».

Командная строка Windows не поддерживает должным образом utf8, так как не использует шрифт UTF8.

Просто поместите файл в то место, куда можно попасть через веб-сервер, и протестируйте его, вызвав файл через веб-сервер.В качестве альтернативы перенаправьте вывод скрипта в текстовый файл:

php test.php> output.txt

И либо откройте файл output.txt с поддержкой UTF8, либо используйте utf8 с поддержкой Tail'program.

Test.php

<?php
    echo "Nürnberg";
?>

Запуск из командной строки:

php test.php

Nürnberg

Вызов через веб-сервер http://localhost/test.php

Nürnberg
0 голосов
/ 03 февраля 2012

Можете ли вы попробовать следующий метатег в вашей HTML-главе.

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"  />
0 голосов
/ 03 февраля 2012

попробуйте другой набор символов на странице, с которой вы повторяете

http://www.w3schools.com/tags/ref_charactersets.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...