您有几个问题要解决,以正确地做这项工作关键字。
第一个,您选择了utf8
字符集来保存您的所有文本。这是一个不错的选择。如果这是一个新的2016年应用程序,您可以选择utf8mb4
字符集。一旦你选择了一个字符集,你的用户应该能够阅读你的文字。
二,搜索和排序(WHERE
和ORDER BY
)的缘故,你需要选择每种语言都具有适当的排序规则。对于现代德语,utf8_general_ci
将工作得很好。 utf8_unicode_ci
如果您需要标准词汇排序,则效果会更好一些。读这个。 http://dev.mysql.com/doc/refman/5.7/en/charset-unicode-sets.html
对于现代西班牙语,您应该使用utf8_spanish_ci
。这是因为在西班牙语中,N和Ñ字符并不相同。我不知道一般排序规则是否适用于土耳其语。
请注意,您好像在您的问题中混淆了字符集和排序规则的概念。你已经提到了你的土耳其专栏和你的德国专栏中的一个字符集。
您可以在查询中明确指定字符集和排序规则。例如,可以编写
WHERE _utf8 'München' COLLATE utf8_unicode_ci = table.name;
在这个表达式中,_utf8 'München'
是字符串常量,并且
constant COLLATE utf8_unicode_ci = table.name
是查询指定符,它包括一个显式的排序规则名称。读这个。 http://dev.mysql.com/doc/refman/5.7/en/charset-collate.html
三,你可能要指定一个默认整理每个特定语言列。默认排序规则会被放入索引中,因此它们将有助于加速搜索。
第四个,您的用户需要使用适当的输入法(键盘映射等)将数据呈现给您的应用程序。土耳其语用户希望知道如何输入土耳其语单词。
使用UTF-8检查 –