【问题标题】:php + mysql + html + javascript = i18n headachephp + mysql + html + javascript = i18n 头疼
【发布时间】:2011-03-15 02:34:57
【问题描述】:

这对我来说一直是个问题,性格问题。我一直试图用小补丁来解决我的问题,实际上这从来没有解决我的问题。所以我正在寻找非常强大的解决方案来解决所有这些问题。我想了解大型应用程序(facebook、google、其他多语言 ajax应用程序和 API)解决了这个问题。我想要一个可以解决我所有字符编码等问题的解决方案。我使用 php、mysql、html 和 javascript 创建我的应用程序,所以该解决方案应该解决所有问题或所有这些语言。如果你编写完整的配置,这是完美的,但如果有很长很长的文件,我可以读到。我需要帮助 。谢谢你 。 我无法通过所有这些语言正确传输字符串(文本)

  1. 我还从外部 api 中提取数据。我应该如何处理它们

【问题讨论】:

  • 如果你能真正描述你所面临的问题会更有帮助。

标签: php javascript mysql html internationalization


【解决方案1】:

如果你坚持在任何地方都使用 Unicode,那就很容易了。

  • 将 MySQL 表编码设置为 UTF-8
  • 通过运行 SET NAMES utf8 确保您以 UTF-8 与数据库通信
  • 以 UTF-8 格式保存所有源代码
  • 在 PHP 中处理可能包含 UTF-8 字符的字符串时,请使用 mb_ functions
  • 发送表示内容为 UTF-8 格式的 HTTP Content-Type 标头
  • Javascript 本质上是 UTF-8,因此您不必担心

问题是不同的技术默认使用不同的字符编码。不幸的是,字符串没有附加隐式编码元数据,它们只是字节序列。除非被告知,否则字符串的接收者只能最好地猜测该序列应该采用什么编码。每当连接两件任何东西时,您都需要确保它们使用相同的编码(或者您需要专门从一种编码转换为另一种编码)。始终假设您必须在某处定义编码,具体需要如何完成取决于技术。

【讨论】:

  • +1,不过我要补充一点,您需要清楚外部 API 使用的字符集和编码,以及必要时编写编码转换函数(例如 ISO-8859-1 -> utf -8)。如今,大多数外部 API(“社交”内容,如 Flickr 和 Twitter)都返回 utf-8。
  • @chryss 没有看到关于 API 的追溯添加位。我认为它属于我已经写过的内容。 :)
  • 嗯,是的,但我是“显式胜于隐式”的那种。无论如何都是很好的答案。
  • @chryss 当然,它永远不会受到伤害。 :)
  • 重要,如果版本低于 5.3,设置 MySQL 为 utf8-bin,如果高于 5.3,设置为 utf8-ucs4。这将确保您不会在 BMP 上方丢失字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-22
  • 2012-06-22
  • 1970-01-01
  • 2013-03-01
  • 1970-01-01
相关资源
最近更新 更多