2

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

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

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

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

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

mb_internal_encoding('UTF-8');

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

谢谢!

4

4 回答 4

7

有几个地方可能会出错。

首先,如果您没有使用header()在 php 中设置输出编码

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 或其他拉丁字符集,它将处理这些字符。

于 2009-10-16T21:36:54.910 回答
1

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

于 2009-10-30T22:40:51.000 回答
0

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

于 2009-10-16T21:44:42.910 回答
0

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

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

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

于 2009-10-16T22:09:09.570 回答