Как отобразить японские символы на странице php? - PullRequest
4 голосов
/ 20 марта 2009

Я пытаюсь отобразить японские символы на странице PHP. Не загружается из базы данных, просто хранится в языковом файле и выводится эхом.

У меня странный сценарий. У меня правильно настроена страница с UTF-8, и я тестирую образец страницы на локальном сервере WAMP, и она работает.

В тот момент, когда я тестировал наши серверы разработки и производства, персонажи не отображаются должным образом.

Это заставляет меня поверить, что это настройка в php.ini. Но я не нашел много информации об этом, поэтому я не уверен, что это проблема.

Есть что-то фундаментальное, что я упускаю?

Спасибо

Ответы [ 4 ]

6 голосов
/ 20 марта 2009

Необходимо доставить документы с надлежащим объявлением кодировки в поле заголовка HTTP Content-Type.

В PHP вы делаете это с помощью функции header до того, как первые данные будут отправлены клиенту, предпочтительно в качестве одного из первых операторов:

<?php
    header('Content-Type: text/html;charset=utf-8');

    // the rest
6 голосов
/ 20 марта 2009

Поскольку вы заявили, что он работает в вашей среде разработки, а не в вашей жизни, вы можете проверить Apache AddDefaultCharset и установить его в UTF-8, если это еще не сделано. *

Я стараюсь убедиться, что следующие шаги проверены

  1. Заголовок PHP отправляется в UTF-8
  2. Метатег установлен в UTF-8 (Content-Type)
  3. Память установлена ​​в UTF-8
  4. Выход сервера настроен на UTF-8

Кажется, это работает для меня. Надеюсь, это поможет.

1 голос
/ 20 марта 2009

Во-первых, я предполагаю, что один и тот же клиентский компьютер используется для обоих тестов.

Итак, используйте Firebug или ваш инструмент выбора, чтобы проверить заголовки HTTP-ответа на локальном сервере и сравнить их с заголовками, сгенерированными другими серверами. Без сомнения, вы найдете разницу.

Обычно ваш сервер должен включать в ответ заголовок, подобный этому:

Content-Type: text/html; charset=UTF-8

Если заголовки в двух системах выглядят примерно одинаково, возьмите тело обоих ответов и загрузите его в шестнадцатеричный редактор и найдите различия в кодировке.

0 голосов
/ 27 октября 2016

Попробуйте следующее (сработало у меня, CentOS 6.8, PHP 5.6)

# 1
Apache Config

/ и т.д. / HTTPD / CONF / httpd.conf
AddDefaultCharset UTF-8

# 2
PHP Config

/ и т.д. / php.ini: * * тысяча двадцать одна default_charset = "utf-8" >> default_charset = "Shift_JIS"

Примечание: установите error_reporting = E_ALL & ~ E_DEPRECATED & ~ E_STRICT

# 3
html head meta

http-equ = "content-type" content = "text / html; charset = Shift_JIS"

...