Исправить некорректно отображаемую кодировку в 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 ответа
- Вам нужно сохранить страницу с
UTF-8 without BOM
кодирование. Добавьте этот заголовок поверх вашего скрипта:
header("Content-Type: text/html; charset=UTF-8");
[РЕДАКТИРОВАТЬ]: Как сохранить файлы в формате UTF-8 без спецификации:
По запросу OP вот как вы можете это сделать в Windows:
- Скачать Блокнот ++. Это потрясающий текстовый редактор, который вы должны использовать.
- Установите это.
- откройте скрипт PHP в Notepad++, который содержит этот код. Страница, на которой вы делаете все кодирование. Да, этот файл на вашем компьютере.
- В Notepad++ в меню "Кодировка" вверху выберите "Преобразовать в UTF-8 без спецификации".
- Сохраните файл.
- Загрузите на свой веб-сервер по FTP или как вы используете.
- Теперь запустите этот скрипт.
У меня была такая же проблема, но когда я добавил
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-сущностей для отображения этих символов.