用于多语言支持的mysql排序规则类型

时间:2013-09-12 14:21:00

标签: mysql

我正在创建一个网站,用几种不同语言存储教学视频。英语将成为主要受众,但我希望法语口音可以用于用户名/ pwds以及瑞典语/挪威语口音/字符。

教程视频的语言也将以中文(粤语/普通话),乌尔都语/印地语,波斯语/达里语和阿拉伯语提供。虽然我很确定最后几个使用标准qwerty键盘,特别是在线注册 - 我知道欧洲键盘有所不同,并有几个口音和连字。

我想知道mysql在存储用户名和电子邮件地址方面的问题,哪种校对类型最适合支持最可能的条目?我知道我可能无法覆盖所有这些,但我想尽可能多地做。

我已经读过uft8_general_ci更好了,但是如果我想支持那些scandanavian角色,它会如何与latin_1 swedish_ci不同?

编辑: user_id字段和电子邮件字段将是唯一的 - 因此fred@home.com与fréd@home.com不同

2 个答案:

答案 0 :(得分:1)

collat​​ion 与存储数据无关。它仅指定比较和排序规则。你需要的是正确的 charset ,它应该是utf8。如果你的MySQL版本是> = 5.5,你甚至应该使用utf8mb4utf16,这两者都涵盖整个Unicode(MySQL的utf8是真正的UTF-8的有限子集,仅涵盖BMP)。 latin1字符集将您限制为其中定义的256个字符。

如果要避免将类似条目视为同一条目,请使用相应的_bin归类。

答案 1 :(得分:0)

我不会使用utf8_general_ci,而是使用utf8_unicode_ci。它对排序和比较提供了更好的支持,您可以将utf8_unicode_ci派生到多个其他排序规则类型 - 例如utf8_swedish_ci以获得正确的瑞典排序和比较。

这是因为它比utf8_general_ci稍慢,但IMO你获得了更多。