【问题标题】:Strategy for supporting unicode & multi language in PHP5PHP5中支持unicode和多语言的策略
【发布时间】:2009-07-06 01:45:29
【问题描述】:

我听说 PHP6 将原生支持 unicode,这有望使多语言支持变得更加容易。然而,PHP5 对 unicode 和多语言的支持很弱(即只是一堆专门的字符串函数)。

我想知道您在 PHP5 应用程序中启用 unicode 和多语言支持的策略是什么?

另外,既然 PHP5 没有像 ASP.NET 那样的 WebResource 文件,你如何存储翻译?

【问题讨论】:

标签: php unicode


【解决方案1】:

其实这并不难,但你可能想让你的问题更具体一点。

如果您正在与数据库通信,请确保您的数据库以 UTF-8 存储数据,并且与数据库的连接使用 UTF-8(常见错误)。确保在建立连接时运行它:

mysql_set_charset('utf8');

对于用户输入,请在表单上设置accept-charset 属性。

<form accept-charset="utf-8">

使用适当的 HTTP 标头为您的网站提供服务:

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

或至少为您的网站设置适当的元标记:

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

保持您的源代码文件以 UTF-8 编码。

如果您将所有内容都保存为 UTF-8,那么您通常无需担心任何事情。只有在您开始在整个应用中混合编码时才会出现问题。

当然,如果您开始谈论字符串操作,则必须多加注意。正如您自己指出的那样,大多数情况下您会想要使用 mb_ 字符串函数集。

【讨论】:

  • 元标签由客户端解析,如果 http-response 不包含它们。这意味着实际上,它们毫无价值。另一方面,您应该使用 php 的函数将标题设置为相同的,恰当地命名为 header
  • +1。为了完整起见,您可能还想在此答案中提及htmlentities()。使用 UTF-8 时,应按如下方式使用:htmlentities($str, ENT_COMPAT, 'UTF-8'); 有关详细信息,请参阅 stackoverflow.com/questions/724926/…
【解决方案2】:

对于 PHP 中的应用程序开发,我使用 CodeIgniter,它负责处理多种语言文件。它非常强大且易于使用。

这是他们Language Class的链接

【讨论】:

    【解决方案3】:

    对于翻译,您可以使用框架,也可以直接使用自己的库。您可以将翻译存储在 csv 文件中并使用 PHP 的 fgetcsv() 对其进行解析。 CSV 文件可以使用任何电子表格应用程序进行编辑。

    例如,您可以查看 Zend_Translate(Zend 框架的一部分)的代码。很容易跟上。

    【讨论】:

      【解决方案4】:

      关于mb_*组函数的使用,在保持兼容性的同时,见mb_string.overloadphp.ini指令。

      它将允许您使用已被启用多字节的函数重载的常规字符串函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-08
        • 2011-11-20
        • 2011-02-25
        • 1970-01-01
        • 2011-02-27
        相关资源
        最近更新 更多