MySQL中文問(wèn)題的解決方案
以下的文章主要講述的是MySQL中文問(wèn)題的實(shí)際解決方案,我們大家都知道MySQL中文問(wèn)題的編碼設(shè)置與亂碼問(wèn)題一直是困擾計(jì)算機(jī)人員的心病,可以說(shuō)對(duì)MySQL中文問(wèn)題的編碼設(shè)置與亂碼問(wèn)題的解決也是迫在眉睫。
MySQL 4.1的字符集支持(Character Set Support)有兩個(gè)方面:字符集(Character set)和排序方式(Collation)。對(duì)于字符集的支持細(xì)化到四個(gè)層次: 服務(wù)器(server),數(shù)據(jù)庫(kù)(database),數(shù)據(jù)表(table)和連接(connection)。我們最終的目標(biāo)是使得這四個(gè)層次轉(zhuǎn)化會(huì)支持中文的編碼,下面以u(píng)tf8為例。
1. 首先查看系統(tǒng)的字符集和排序方式。如果想查看某個(gè)特定的數(shù)據(jù)庫(kù)的字符集和排序方式,應(yīng)該先選定數(shù)據(jù)庫(kù),MySQL>use databasename;
- MySQL> SHOW VARIABLES LIKE ''character_set_%'';
- +--------------------------+----------------------------+
- | Variable_name | Value |
- +--------------------------+----------------------------+
- | character_set_client | latin1 |
- | character_set_connection | latin1 |
- | character_set_database | latin1 |
- | character_set_results | latin1 |
- | character_set_server | latin1 |
- | character_set_system | utf8 |
- | character_sets_dir | /usr/share/MySQL/charsets/ |
- +--------------------------+----------------------------+
2 rows in set (0.00 sec)
- MySQL> SHOW VARIABLES LIKE ''collation_%'';
- +----------------------+-------------------+
- | Variable_name | Value |
- +----------------------+-------------------+
- | collation_connection | latin1_swedish_ci |
- | collation_database | latin1_swedish_ci |
- | collation_server | latin1_swedish_ci |
- +----------------------+-------------------+
3 rows in set (0.00 sec) 上面列出的值就是系統(tǒng)的默認(rèn)值,lanti是不支持中文的,所以我們把它改成urf8。
下面我們就來(lái)修改這四個(gè)層次的編碼方式:
1 在my.cf文件的[MySQL中文問(wèn)題]段設(shè)置:
- default-character-set=utf8
這條語(yǔ)句的作用是把character_set_client, character_set_connection_,character_set_results 設(shè)定為utf8,包括對(duì)應(yīng)的排列方式的編碼。 Character_set_server是系統(tǒng)編碼,這個(gè)是不用改的。
當(dāng)然改變character_set_client, character_set_connection_,character_set_results編碼方式的另外一種方法是:
- SET NAMES “UTF8”;
它的作用相當(dāng)于:
- SET character_set_client = utf8;
- SET character_set_results = utf8;
- SET character_set_connection = utf8;
2. 改變數(shù)據(jù)庫(kù)的編碼方式
- alter database databasename character set utf8;
通過(guò)以上的更改數(shù)據(jù)庫(kù)的編碼工作算是昨晚了,當(dāng)然除了這個(gè)方法還有一個(gè)萬(wàn)能個(gè)的方法,那就是看著那個(gè)不是utf8,你只要把相應(yīng)的編碼改成utf8就可以了。格式如下:SET
- character_set_client = utf8;
3. 不管你是web編程還是桌面編程,你的數(shù)據(jù)庫(kù)的連接地址url中,一定要后綴:
?useUnicode=true&characterEncoding=utf-8/hibernate?useUnicode=true&characterEncoding=utf-8
當(dāng)然如果你采用了MySQL中文問(wèn)題的管理工具如MySQL yog,MySQL manager那么你數(shù)據(jù)庫(kù)設(shè)定也可以在可視化環(huán)境下直接設(shè)置。當(dāng)然這也只是限制在database的設(shè)定。
【編輯推薦】