如果用户将一串阿拉伯语文本写入 facebook 评论并保存,那么数据存储的排序规则类型是什么?
我不相信他们使用 mysql 表来发表评论,但我刚刚使用 localhost mysql 表弄乱了这个主题,我在其中以二进制字符存储了一些阿拉伯语。
它将文本转换为一些可能转义的字符序列。但是一旦你保存了它,它就会保持这种状态。
如果您考虑 i18n,即使我将 facebook 设置为英文,输入其他非西方编码字符仍然可以正确保存和显示。
对他们如何实现这一目标有任何见解吗?
如果用户将一串阿拉伯语文本写入 facebook 评论并保存,那么数据存储的排序规则类型是什么?
我不相信他们使用 mysql 表来发表评论,但我刚刚使用 localhost mysql 表弄乱了这个主题,我在其中以二进制字符存储了一些阿拉伯语。
它将文本转换为一些可能转义的字符序列。但是一旦你保存了它,它就会保持这种状态。
如果您考虑 i18n,即使我将 facebook 设置为英文,输入其他非西方编码字符仍然可以正确保存和显示。
对他们如何实现这一目标有任何见解吗?
第一的; 我不确定,但我不相信 MySQL 会为此发挥作用。
正确的做法是将其以 UTF-8 格式存储在<some-system>中。我猜这也可能是 MySQL。我不知道具体细节,但我确实相信 MySQL(以及 PHP 就这点而言**)并没有真正达到 UTF-8/Unicode 支持的水平,因此它们可能会出现一些“故障”。例如,您需要set names=utf8
在打开连接后首先执行“”或一些疯狂的东西才能使 utf8 工作(这可能是您的测试不起作用的原因)。另外,我记得 MySQL 不支持 4 字节编码的 UTF-8 字符,最多只能支持 3 个字符。不知道目前是否属实,但我隐约记得一些关于它的事情。[编辑]应该在 5.5+中修复
我不. [编辑] 他们应该需要2 或 3 个字节。
当我们遇到故障时:关于 PHP,我记得 strlen()返回字节而不是实际字符等内容。如果我没记错的话,它有一些 mb_XXX 函数(多字节字符串)应该更好地处理 UTF-8。[编辑]事实证明确实如此。
我完全看不出 i18n 和将 facebook 设置为英语(或斯瓦希里语)会如何影响这一点。它只是界面中使用的语言(可能/可能影响日期时间格式等),与用户生成的内容无关。
哦,差点忘记了每个软件开发人员绝对、绝对必须了解 Unicode 和字符集(没有借口!)- link
** 之所以提到它,是因为它通常与 MySQL 密切相关。