我正在创建一个网站,用几种不同语言存储教学视频。英语将成为主要受众,但我希望法语口音可以用于用户名/ pwds以及瑞典语/挪威语口音/字符。
教程视频的语言也将以中文(粤语/普通话),乌尔都语/印地语,波斯语/达里语和阿拉伯语提供。虽然我很确定最后几个使用标准qwerty键盘,特别是在线注册 - 我知道欧洲键盘有所不同,并有几个口音和连字。
我想知道mysql在存储用户名和电子邮件地址方面的问题,哪种校对类型最适合支持最可能的条目?我知道我可能无法覆盖所有这些,但我想尽可能多地做。
我已经读过uft8_general_ci更好了,但是如果我想支持那些scandanavian角色,它会如何与latin_1 swedish_ci不同?
编辑: user_id字段和电子邮件字段将是唯一的 - 因此fred@home.com与fréd@home.com不同
答案 0 :(得分:1)
collation 与存储数据无关。它仅指定比较和排序规则。你需要的是正确的 charset ,它应该是utf8
。如果你的MySQL版本是> = 5.5,你甚至应该使用utf8mb4
或utf16
,这两者都涵盖整个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你获得了更多。