我正在尝试在PHP页面上显示日语字符。没有从数据库加载,只是存储在语言文件中并回显出来。
我遇到了一个奇怪的场景。我已经使用UTF-8正确设置了页面,我在本地WAMP服务器上测试了一个示例页面,它可以工作。
我在开发和生产服务器上测试时,角色无法正常显示。
这让我相信它是php.ini中的一个设置。但我没有找到关于此的更多信息,所以我不确定这是否是问题所在。
我有什么基本的东西吗?
由于
答案 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(如果尚未安装)。
我倾向于确保检查以下步骤
这似乎对我有用。希望这会有所帮助。
答案 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”