Исправить неправильно отображаемую кодировку в html-документе с помощью php

Есть ли способ исправить символы, которые отображаются неправильно после запуска этой разметки 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);

Оригинальный выход: Г-н Смит из Бангкока отпраздновал "Классику с современной женщиной".

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

Ответ 1

  • Вам нужно сохранить страницу с кодировкой UTF-8 without BOM.
  • Добавьте этот заголовок поверх script:

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

[EDIT]: как сохранить файлы как UTF-8 без спецификации:

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

  • Загрузите Notepad ++. Это отличный текстовый редактор, который вы должны использовать.
  • Установите его.
  • откройте PHP script в Notepad ++, который содержит этот код. Страница, на которой вы все кодируете. Да, этот файл на вашем компьютере.
  • В Notepad ++ из меню "Кодировка" вверху выберите "Преобразовать в UTF-8 без спецификации".
  • Сохраните файл.
  • Загрузите на свой веб-сервер по FTP или независимо от того, что вы используете.
  • Теперь запустите script.

Ответ 2

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

ob_start();

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

ob_end_flush();

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

Ответ 3

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

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

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

Ответ 4

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

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

каждый вывод i, подобный этому utf8_decode()

BOM предназначен для MS-окон.