1

如果用户将一串阿拉伯语文本写入 facebook 评论并保存,那么数据存储的排序规则类型是什么?

我不相信他们使用 mysql 表来发表评论,但我刚刚使用 localhost mysql 表弄乱了这个主题,我在其中以二进制字符存储了一些阿拉伯语。

它将文本转换为一些可能转义的字符序列。但是一旦你保存了它,它就会保持这种状态。

如果您考虑 i18n,即使我将 facebook 设置为英文,输入其他非西方编码字符仍然可以正确保存和显示。

对他们如何实现这一目标有任何见解吗?

4

1 回答 1

2

第一的; 我不确定,但我不相信 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 密切相关。

于 2012-12-06T21:37:12.457 回答