Исправить неправильно отображаемую кодировку в 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);

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

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

4 ответов


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

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

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

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

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

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

ob_start();

в первой строке

ob_end_flush();

до конца, похоже, работает


это <head> элемент:

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

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


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

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

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

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