Facebook内容整理和非西方编码字符

时间:2012-12-06 21:16:12

标签: database internationalization collation complex-data-types

如果用户将阿拉伯语中的一串文本写入Facebook评论并保存,那么数据存储的整理类型是什么?

我不相信他们使用mysql表进行评论,但我只是使用localhost mysql表来讨论这个主题,在那里我用一个二进制字符存储了一些阿拉伯语。

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

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

有关他们如何实现这一目标的任何见解?

1 个答案:

答案 0 :(得分:2)

首先;我不确定,但我不相信MySQL可以在任何地方发挥作用。

正确的做法是将UTF-8存储在< some-system> 期间。 我猜也可能是MySQL。我不知道具体细节,但我确实相信MySQL(和那个问题的PHP **)并不是真的与UTF-8 / Unicode相提并论支持,所以他们可能会出现一些“故障”。例如,在打开utf8的连接后,你需要首先执行“set names=utf8”或者一些疯狂的事情(这可能就是你的测试不起作用的原因)。另外,我记得有些MySQL不支持4字节编码的UTF-8字符,最多只有3个字符。不知道目前是否正确,但我依旧记得有关它的事情。 [edit] 应修正in 5.5+ 我不知道阿拉伯语但它们可能是4字节的。 [edit]他们应该需要2 or 3 bytes

虽然我们正在处理故障:关于PHP我记得像strlen()returning bytes instead of actual characters等等。如果我没有弄错,它有一些mb_XXX函数(多字节字符串)应该更好地处理UTF-8。 [edit] 原来it does

我看不出i18n如何将facebook设置为英语(或斯瓦希里语)会对此产生影响。它只是界面中使用的语言(可能/可能影响日期时间格式等),与用户生成的内容无关。

哦,差点忘了强制性The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) - 链接

**只是提到它,因为它通常与MySQL密切相关。