2010-07-28 56 views
0

我試圖將我的網站徹底切換到UTF-8,所以我不必處理utf8_encode()& utf8_decode()函數。my.cnf中正確的MySQL字符集/排序規則變量?

我的表格設置正確,我暫時使用查詢SET NAMES utf8覆蓋my.cnf文件。

我的問題是 - my.cnf中有很多字符集和校對變量,我懷疑有些人應該被單獨留下......我應該更改哪些以達到SET NAMES utf8的效果?

(我的表的排序規則utf8_unicode_ci。)

character_set_client | latin1 | 
character_set_connection | latin1 | 
character_set_database | latin1 | 
character_set_filesystem | binary | 
character_set_results | latin1 | 
character_set_server | latin1 | 
character_set_system | utf8 | 

collation_connection | latin1_swedish_ci | 
collation_database | latin1_swedish_ci | 
collation_server | latin1_swedish_ci | 
+0

爲了讓你知道,字符集和排序規則並不是一回事。 MySQL默認爲'latin1_swedish_ci'和一個字符集'UTF-8'的排序規則。檢查這個問題之間的兩個很好的描述http://stackoverflow.com/questions/341273/what-does-character-set-and-collat​​ion-mean-exactly – ubiquibacon 2010-07-28 22:06:32

+0

相對答案是[here](http:// stackoverflow .COM /問題/ 3513773 /改變MySQL的默認字符集到UTF8 - 在 - 我-CNF/3513812#3513812)。 – 2011-11-10 11:17:20

回答

0

好,整理主要是爲了分類,所以,除非你是存儲與特定分類需求lnaguage,utf8_unicode_ci應該罰款。

character_set_*值在內部用於所有其他字符串操作 - 在諸如WHERE子句或IF/CASE語句,CHAR_LENGTH(),REPLACE(),SUBSTRING()等字符串函數的地方進行值檢查。

一般來說,他們應該所有是相同的(在這種情況下,utf8)除了filesystem - 我建議保留,在二進制的,除非你有特殊需要從移開。

+0

這絕對是啓發了這個問題的文件系統/二進制設置;那個,而且我找不到任何有關這些具體內容的文檔。我的意思是,我的直覺只是將它們全部改爲utf8/utf8_unicode_ci - 但二進制設置削弱了我的信心。我知道排序規則是不同的,但同時,latin1_swedish_ci對我來說根本沒有意義,所以我也將它轉換爲UTF-8,只是爲了一致性。無論如何,感謝您的答案......我想我會改變除「character_set_filesystem」之外的所有內容。 – JKS 2010-07-30 03:26:51