如何在php页面上显示日文字符?

时间:2009-03-20 16:47:46

标签: php unicode character-encoding

我正在尝试在PHP页面上显示日语字符。没有从数据库加载,只是存储在语言文件中并回显出来。

我遇到了一个奇怪的场景。我已经使用UTF-8正确设置了页面,我在本地WAMP服务器上测试了一个示例页面,它可以工作。

我在开发和生产服务器上测试时,角色无法正常显示。

这让我相信它是php.ini中的一个设置。但我没有找到关于此的更多信息,所以我不确定这是否是问题所在。

我有什么基本的东西吗?

由于

4 个答案:

答案 0 :(得分:6)

您必须在HTTP header field Content-Type

中使用正确的编码声明传递文档

在PHP中,您可以在第一个数据发送到客户端之前通过header function执行此操作,因此最好是作为第一个语句之一:

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

    // the rest

答案 1 :(得分:6)

由于您已声明它在您的开发环境中工作而不是在您的工作环境中,您可能需要检查Apache的AddDefaultCharset并将其设置为UTF-8(如果尚未安装)。

我倾向于确保检查以下步骤

  1. PHP标头以UTF-8
  2. 发送
  3. 元标记设置为UTF-8(内容类型)
  4. 存储设置为UTF-8
  5. 服务器输出设置为UTF-8
  6. 这似乎对我有用。希望这会有所帮助。

答案 2 :(得分:1)

首先,我假设两个测试都使用相同的客户端机器。

因此,使用Firebug或您的工具来检查本地服务器上的HTTP响应标头,并将它们与其他服务器生成的标头进行比较。毫无疑问,你会发现不同之处。

通常,您的服务器应在响应中包含这样的标头:

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

如果两个系统上的标题看起来几乎相同,请抓取两个响应的主体并将其加载到十六进制编辑器中,并查找编码差异。

答案 3 :(得分:0)

尝试以下(为我工作,CentOS 6.8,PHP 5.6)

<强>#1
    Apache Config

  

/etc/httpd/conf/httpd.conf中
  AddDefaultCharset UTF-8

<强>#2
    PHP配置

  

/etc/php.ini中:
  default_charset =“utf-8”&gt;&gt; default_charset =“Shift_JIS”

注意:设置error_reporting = E_ALL&amp; ~E_DEPRECATED&amp; 〜E_STRICT

<强>#3
    html head meta

  

http-equiv =“content-type”content =“text / html; charset = Shift_JIS”