【问题标题】:How to handle with foreign languages?外语怎么处理?
【发布时间】:2010-11-09 15:29:10
【问题描述】:

标签: html database zend-framework character-encoding special-characters


【解决方案1】:

这是一篇非常好的文章,在我开始 Web 开发时帮助了我。我在多语言环境中工作,所以我经常碰到这些东西(只是为了增加这篇文章的精彩:)

The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

我始终确保我的文件以 UTF8 行编码保存,我的 php 头文件将字符集声明为 utf8,我的数据库使用 utf8_general_ci 进行排序,并且我的 html 头标记包含声明内容的元标记作为 utf8。我认为这涵盖了它。

HTH :)

编辑:只是添加(更针对您的特定问题)检查您的 PHP 代码是否将您的结果视为 utf8。数据可能会正确存储在数据库中,但可以在提供服务时进行转换。

【讨论】:

  • 这篇文章虽然有点长,但很有趣。我认为他的问题是文件本身的编码(这曾经是我的问题¬_¬)无论如何,如果 OP 使用 Eclipse(因为他应该使用 ZF),他可以在首选项中修改其工作区中所有文件的编码-> 工作区,在这里您可以更改文件编码。
  • 我认为这不是文件,因为我认为他正在从数据库中提取这些菜单项(我假设)。至少现在他有一个检查清单来调试它:)
  • 将它存储在数据库中的正确形式是什么?我是否必须在 phpMyAdmin 中看到 çã 而不是 çã?或者 çã应该怎么做?
  • utf8_general_ci 是我常用的排序规则。在这种情况下,您希望所有内容都使用 UTF8。如果您看到实际的 HTML 代码,我猜想您在存储数据之前对数据使用了 htmlentities()。我不确定如何回答你的第二个问题,我猜 phpmyadmin 使用 utf8,所以你应该看到正确的字符(所以如果你保存了“é”,你应该看到“é”)
【解决方案2】:

确保您的数据库使用 UTF-8 字符集并且您的数据库连接(字符在 MySQL 和您的 PHP 代码之间传输的编码)是 UTF-8(请参阅 this post 以供参考)。

另请注意,PHP 中的某些字符串操作会破坏 UTF8 编码的字符串,因为它们的工作假设是“1 char = byte”,而 UTF 8 则不成立。htmlspecialchars 不适用于 UTF-8 编码的字符串。

【讨论】:

    【解决方案3】:

    尝试更改 .php 文件编码 - 打开 .php 文件并将其保存(或覆盖)为 utf8 文件。希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2017-10-21
      • 2013-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多