PHP日语字符串设置为?

时间:2009-10-16 21:30:55

标签: php string utf-8 echo

我有一个带有一个简单回显函数的PHP文件:

echo 'アクセスは撥ねりません。';

但是当我访问该页面时,我得到了这个:

????????????

有人能帮助我吗? 我的页面编码设置为UTF-8,我知道,因为我使用的所有浏览器都这样说。 我也在echo函数之前执行此操作:

mb_internal_encoding('UTF-8');

这是做什么的? 这对我有帮助吗? 我只需要能够回显静态日语字符串。

谢谢!

4 个答案:

答案 0 :(得分:7)

有些地方可能会出错。

首先,如果您没有在php中使用 header()

设置输出编码
header('Content-type: text/html; charset=utf-8');

或带有元标记的html:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

您需要检查php.ini设置 default_charset 。这可能是默认为 iso-8859-1

其次,您可能还需要检查保存php脚本的内容编码。如果你把它保存为ASCII或其他一些拉丁字符集,那么它就会捣乱字符。

答案 1 :(得分:1)

我明白了。 我只需要设置mbstring扩展设置来处理UTF-8中的内部字符串。 Thas扩展是我的PHP 5.3.0构建的标准。

答案 2 :(得分:0)

也许您正在打印UTF-16(扩展字符集)中包含的日文字符?

答案 3 :(得分:0)

我刚做了一个快速测试,你的例子对我有用,所以很有可能是其中之一:

  • 您的文件不是以UTF-8保存,而是以其他一些编码保存,例如Shift-JIS。一个不错的编辑器应该能够让你看到它使用的编码
  • 您的服务器正在发送错误的http标头。你能用一些工具检查标题并粘贴结果吗?或者您从浏览器获得的结果?
  • 浏览器使用的是不兼容的字体

我以UTF-8保存了一个文件,将代码粘贴到其中,我的服务器使用Content-Type:text / html服务该文件; charset = utf-8,它显示得很好。不需要使用mb_函数或其他任何东西。