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

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

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

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

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

ob_start();

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

ob_end_flush();

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

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

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

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

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

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

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

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

Другие вопросы по тегам