Исправить некорректно отображаемую кодировку в HTML-документе с помощью php - PullRequest
8 голосов
/ 28 августа 2010

Есть ли способ исправить символы, которые отображаются неправильно после запуска этой разметки html через phpquery :: newDocument? В исходном документе есть двойные кавычки - Классика с современной женщиной - в оригинальном документе они отображаются неправильно, после создания нового документа с phpquery.

    //Original document is UTF-8 encoded
$raw_html = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body><p>Mr. Smith of Bangkok celebrated the “Classics with modern Woman”.</p></body></html>';
print($raw_html);

$aNew_document = phpQuery::newDocument($raw_html);
print($aNew_document);

Исходный вывод: Мистер Смит из Бангкока отпраздновал «Классику с современной женщиной».

Вывод нового документа: мистер Смит из Бангкока отпраздновал «Классику с современной женщиной».

Ответы [ 4 ]

25 голосов
/ 28 августа 2010
  1. Вам необходимо сохранить страницу в кодировке UTF-8 without BOM.
  2. Добавьте этот заголовок поверх вашего скрипта:

    header("Content-Type: text/html; charset=UTF-8");

[РЕДАКТИРОВАТЬ]: Как сохранить файлы в формате UTF-8 без спецификации:

По запросу OP вот как вы можете это сделать в Windows:

  1. Скачать Блокнот ++ . Это потрясающий текстовый редактор, который вы должны использовать.
  2. Установите его.
  3. открыть скрипт PHP в Notepad ++, который содержит этот код. Страница, на которой вы делаете все кодирование. Да, этот файл на вашем компьютере.
  4. В Notepad ++ в меню Кодировка вверху выберите «Преобразовать в UTF-8 без спецификации».
  5. Сохраните файл.
  6. Загрузка на ваш веб-сервер по FTP или как вы используете.
  7. Теперь запустите этот скрипт.
3 голосов
/ 01 марта 2013

У меня была такая же проблема, но когда я добавил

ob_start();

в первую строку

ob_end_flush();

до конца, это, кажется, работает

1 голос
/ 13 января 2015

У меня была такая же проблема с использованием класса phpQuery.Проблема, как уже упоминалось выше, в ответе, получившем наибольшее количество голосов, - файл сценария сохраняется как UTF8 с BOM.

Поскольку у меня не было никаких шансов получить блокнот ++ на Mac OSX,

каждый вывод, который я готовил какэта utf8_decode()

спецификация предназначена для MS-окон.

1 голос
/ 28 августа 2010

У вас есть это в элементе <head>:

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

Следующим курсом будет использование HTML-сущностей для отображения этих символов.

...