Правильная кодировка для отображения "& acirc; €"? - PullRequest
10 голосов
/ 21 июня 2011

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

По сути, я соскребаю некоторый HTML-код с сайта с помощью PHP, а затем запускаю его через DOMDocument PHP дляизменить некоторые URL и т. д., и когда это будет сделано, он выводит HTML с некоторыми странными вещами.Пример: там, где должна быть заключительная кавычка, она выдает ”

У меня есть метатег страницы для charset, установленный на utf-8, но тогда символы ” отображаются как †насайт.Я не уверен, что я просто не понимаю кодировку символов, или что.

Есть какие-нибудь предложения о том, как решить эту проблему?Что-то на стороне клиента с метатегом, или какое-то преобразование PHP на стороне сервера?

Ответы [ 2 ]

2 голосов
/ 12 сентября 2014

Иногда недостаточно задать кодировку в HTML или заголовок ответа.Если на вашем сервере не все настроено для UTF-8, ваш текст может быть неправильно преобразован где-то по пути.Возможно, вам потребуется включить кодировку UTF-8 для Apache и PHP прямо в их файлах конфигурации.(Если вы не используете Apache, попробуйте пропустить этот шаг.)

Настройка Apache UTF-8:

Отредактируйте либо charset.conf (идеально), либо httpd.conf , добавив в конец эту строку:

AddDefaultCharset utf-8

(Если у вас нет доступа к файлам конфигурации Apache, вы можете создать ".htaccess"файл в корневом каталоге вашего HTML с тем же кодом.)

Настройка PHP UTF-8:

Отредактируйте файл php.ini, выполнив поиск" default_charset"и измените его на:

default_charset = "utf-8"

Перезапустите Apache:

В зависимости от типа вашего сервера, эта команда может выполнить трюк с помощью командной строки:

sudo service apache2 restart
0 голосов
/ 21 июня 2011

Я думаю, вам следует связать / опубликовать страницу (часть), с которой у вас возникли проблемы, и часть вашего кода, чтобы получить более качественную обратную связь.

Несколько советов: попробуйте преобразовать полученную строку страницыот кодирования, указанного в его метатеге (или реального кодирования документа, если это не так), до UTF-8 и / или принудительного кодирования документа в объекте DOMDocument (как описано выше или с использованием свойств), поскольку DOMDocument, кажется, правильно используеткодировать метатег, только если он является первым в HTML-теге заголовка.

Вы также можете попытаться отключить преобразование сущностей или некоторые другие свойства, так как они не нужны для простого изменения URL-адреса..

...