2010-07-28 60 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