2012-03-15 100 views
1

我有一个存储用户名,密码和基本信息的DB。然而'信息'只存储英文字符。如何处理多语种MySQL查询?

如何以不同的语言存储数据,比如说英语,法语,俄语,汉语,日语,阿拉伯语等?我意识到默认排序规则不支持。

什么是最好的解决方案,你们如何解决它?

+1

utf-8 ---------- – 2012-03-15 21:52:53

+0

我试过了,对于除英语以外的其他语言,我仍然感到怪异的字符。你只是为那个特定的领域设置排序规则,还是需要做更多的事情? – NoobDev4iPhone 2012-03-15 22:13:52

+0

还有更多。见例如http://stackoverflow.com/questions/8544312/getting-html-entities-for-all-major-currencies/8544381#8544381的列表 – 2012-03-15 22:29:32

回答

1

将整个数据库以及表的默认排序规则更改为utf8_general_ci。没有理由遭受(用这种自由形式的数据)。

ALTER DATABASE db CHARACTER SET utf8 COLLATE utf8_general_ci; 
ALTER TABLE tbl CONVERT TO utf8 
ALTER TABLE tbl CHARACTER SET utf8 COLLATE utf8_general_ci; 

阅读关于this page末尾的几个疑难解答。

+1

与普遍认为的相反,*排序规则*与*编码没有多大关系! – deceze 2012-03-15 22:50:48

+1

在MySQL中,排序规则与编码非常相关。设置'COLLATE utf8_something'意味着'CHARACTER SET utf8'。在任何情况下,为了能够处理存储在这些UTf-8列中的数据,您需要确保您的应用程序使用'SET NAMES'utf8''或可用的更好的基于库的方式来通过与MySQL的连接来说明UTF-8,特定的接口(例如PHP的'mysql_set_charset'或python-mysql的'charset'构造函数参数)。 – bobince 2012-03-15 23:14:29