2012-03-15 81 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