Как убедиться, что знак британского фунта стерлингов (£) отображается правильно? - PullRequest
2 голосов
/ 24 июня 2009

У меня есть PHP-скрипт, который считывает данные из файла XML, возвращает их через AJAX на страницу, которая затем помещает данные в соответствующую текстовую область.

Тип содержимого страницы следующий:

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />

Заголовок XML выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE xsl:stylesheet  [
    <!ENTITY pound  "&#163;">
 ]>
...

Проблема в том, что когда данные поступают в текстовое поле, перед ними стоит символ Â.

У меня сложилось впечатление, что установка типа контента на UTF-8 решает эту проблему, но я должен ошибаться. Может кто-нибудь сказать мне, какой тип кодировки мне нужно использовать, чтобы он отображался последовательно?

Ответы [ 2 ]

6 голосов
/ 24 июня 2009

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

Итак, у вас есть

  1. HTML-страница, которая
  2. делает AJAX-вызов, который
  3. запускает некоторый код на сервере, который
  4. создает XML-ответ для XML-файла, который является
  5. возвращается в браузер и отображается в текстовом поле

Таким образом, в идеале на каждом шаге требуется кодировка UTF-8. Скорее всего, на каком-то этапе процесса ваш персонаж подвергается нападкам. Вот шаги, которые я бы предпринял, чтобы отследить это

  1. Убедитесь, что на вашей HTML / PHP-странице указан правильный метатег
  2. Убедитесь, что ваш текстовый файл HTML / PHP сохранен как UTF-8
  3. Убедитесь, что ваш прочитанный XML-файл был сохранен как UTF-8
  4. Убедитесь, что ваш XML-файл, из которого вы читаете, и ответ, который вы строите, имеют свою кодировку, установленную в прологе <? Xml version = "1.0" encoding = "utf-8"?>
  5. Убедитесь, что заголовки ответа вашего сервера отправляют utf-8
  6. Позвоните на службу вручную в браузере, чтобы узнать, правильно ли возвращается символ
3 голосов
/ 24 июня 2009

Вы должны убедиться, что ваш запрос AJAX также возвращает UTF-8.Настройка Content-Type статической страницы - это хорошо, но это не повлияет на кодировку Content-Type HTTP-передачи, которая происходит при выполнении вызова Ajax.

Попробуйте использовать этот код в сценарии.который возвращает результаты Ajax (перед любым другим выводом).Это установит Content-Type вашего ответа HTTP:

header('Content-Type: text/html; charset=utf-8');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...