Вопросительные знаки вместо китайских символов

Я пытаюсь разместить китайский текст на веб-сайте, но как только страница будет размещена в Интернете, вместо китайского текста я вижу ряд вопросительных знаков ?????????? ???????????

Я тестировал одну и ту же страницу на сервере WAMP, прежде чем размещать ее в Интернете (все страницы имеют расширение php), и китайские символы показывают, что это нормально, только когда страницы запрашиваются с интернет-хост-сервера, я вижу все вопросительные знаки ,

страница содержит (если это помогает):

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

Related of "Вопросительные знаки вместо китайских символов"

Если вы используете какую-либо базу данных, убедитесь, что вы запустили ее перед запросом базы данных (но после подключения):

 mysql_set_charset("utf8"); 

Фактические заголовки HTTP-ответа всегда будут переопределять заголовки HTML <meta> . Согласно вашему комментарию:

Я не слишком хорошо знаком с заголовками, вот заголовок ответа с рабочей страницы:

  Дата: Чт, 24 июн 2010 05:24:23 GMT 
 Сервер: Apache / 2.0.63 (Win32) PHP / 5.2.11 
 X-Powered-By: PHP / 5.2.11 
 Контент-длина: 3622 
 Keep-Alive: timeout = 15, max = 100 
 Подключение: Keep-Alive 
 Content-Type: text / html;  кодировка = UTF-8 
 200 OK 

и нерабочую страницу:

  Дата: Чт, 24 июн 2010 05:26:54 GMT 
 Сервер: Apache 
 X-Powered-By: PHP / 5.2.12 
 Подключение: закрыть 
 Передача-кодирование: chunked 
 Content-Type: text / html 
 200 OK

См., Заголовок ответа HTTP на нерабочей странице имеет Content-Type text/html без какой-либо определенной кодировки. Это должен был быть text/html; charset=UTF-8 text/html; charset=UTF-8 .

Вы можете обойти это, добавив следующую строку в начало страницы PHP, прежде чем вы выпустите любой символ (HTML) в тело ответа.

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

Обновление: согласно комментариям, вышеуказанная причина, похоже, исключена. Следующая проверка; сам файл сохраняется как UTF-8? Щелкните правой кнопкой мыши и просмотрите источник. Есть ли и вопросительные знаки? Если это так, то во время FTP-передачи на хостинг что-то пошло не так. Выберите двоичный код вместо текста / ASCII или установите кодировку символов для переданных текстовых файлов в настройках клиента FTP и повторите попытку.

У меня была аналогичная проблема, и я смог ее решить.

У меня было содержание сайта, проходящего через PHP. Когда я рассматривал его как необработанный HTML-файл, он отображал бы символы правильно, но если бы я передал его через PHP (в моем случае, используя auto_prepend_file), это превратило бы символы в вопросительные знаки.

Решение заключалось в том, чтобы отключить detect_unicode в настройках PHP. В моем случае я только что редактировал файл .htaccess, чтобы включить строку:

 php_value detect_unicode "0" 

… и китайские персонажи начали правильно отображаться. Может быть эквивалентное решение, используя ini_set ().

Надеюсь это поможет.

Поскольку функции mysql_ * в PHP устарели с PHP 5.5.0, вот SQL, который вы можете выполнить, по существу, делает то же самое, что и mysql_set_charset:

SQL SET character_set_client = utf8

Это было ключом к тому, чтобы мои формы сохраняли текст Unicode в MySQL. Выполните этот SQL-запрос сразу после установления соединения с вашим сервером MySQL.