我正在设置一个新服务器,并希望在我的 Web 应用程序中完全支持 UTF-8。我过去曾在现有服务器上尝试过此操作,但似乎总是最终不得不回退到 ISO-8859-1。这...
我正在设置一个新服务器,并希望在我的 Web 应用程序中完全支持 UTF-8。我过去曾在现有服务器上尝试过此操作,但似乎总是最终不得不回退到 ISO-8859-1。
我到底需要在哪里设置编码/字符集?我知道我需要配置 Apache、MySQL 和 PHP 才能做到这一点 — 是否有一些我可以遵循的标准清单,或者可以排除不匹配发生的位置故障?
这是用于新的 Linux 服务器,运行 MySQL 5、PHP 5 和 Apache 2。
除了在 php.ini 中设置之外 default_charset
在任何输出之前使用代码 header()
发送正确的字符集
header('Content-Type: text/html; charset=utf-8');
只要您意识到大多数 字符串函数不适用于 Unicode,并且有些函数可能会完全破坏字符串 ,那么在 PHP 中使用 Unicode 就很容易了。PHP 认为 \'字符\' 的长度为 1 个字节。有时这是可以的(例如, explode() 仅查找字节序列并将其用作分隔符 - 因此您查找的实际字符并不重要)。但其他时候,当该函数实际上设计用于处理 characters ,PHP 不知道您的文本具有使用 Unicode 找到的多字节字符。
一个值得一试的好库是 phputf8 。它重写了所有“坏”函数,因此您可以安全地处理 UTF8 字符串。还有一些扩展,例如 mb_string 扩展,也可以为您完成此操作,但我更喜欢使用该库,因为它更易于移植(但我编写的是大众市场产品,因此这对我来说很重要)。但无论如何,phpputf8 可以在后台使用 mb_string 来提高性能。