Mysql中文問題的解決案例演示
以下的文章主要介紹的是Mysql中文問題的實(shí)際解決方法,其中主要包括MySql字符集的問題解決,ROR+Mysql5 utf8中正確搭配相關(guān)問題的實(shí)際解決方案,以下就是文章的具體內(nèi)容的主要描述,望你瀏覽之后會有所收獲。
『出錯』Hibernate對象關(guān)系在MySQL4.1中無法正確執(zhí)行?
推薦圈子: JBoss SEAM
更多相關(guān)推薦 閱讀過不少關(guān)于mysql的編碼設(shè)置和亂碼問題的一些文章,經(jīng)過再三的調(diào)試,終于通過,終于解決了一塊心病,終于解了我心頭之恨,哈哈哈?,F(xiàn)在把它概括如下。
MySQL 4.1的字符集支持(Character Set Support)有兩個方面:字符集(Character set)和排序方式(Collation)。對于字符集的支持細(xì)化到四個層次: 服務(wù)器(server),數(shù)據(jù)庫(database),數(shù)據(jù)表(table)和連接(connection)。我們最終的目標(biāo)是使得這四個層次轉(zhuǎn)化會支持Mysql中文的編碼,下面以utf8為例。
1. 首先查看系統(tǒng)的字符集和排序方式。如果想查看某個特定的數(shù)據(jù)庫的字符集和排序方式,應(yīng)該先選定數(shù)據(jù)庫,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/ |
- +--------------------------+----------------------------+
- 7 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是不支持Mysql中文的,所以我們把它改成urf8。
下面我們就來修改這四個層次的編碼方式:
1 在my.cf文件的[mysqld]段設(shè)置:
- default-character-set=utf8
這條語句的作用是把character_set_client, character_set_connection_,character_set_results 設(shè)定為utf8,包括對應(yīng)的排列方式的編碼。
Character_set_server是系統(tǒng)編碼,這個是不用改的。
當(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ù)庫的編碼方式
- alter database databasename character set utf8;
通過以上的更改數(shù)據(jù)庫的編碼工作算是昨晚了,當(dāng)然除了這個方法還有一個萬能個的方法,那就是看著那個不是utf8,你只要把相應(yīng)的編碼改成utf8就可以了。格式如下:SET
- character_set_client = utf8;
3. 不管你是web編程還是桌面編程,你的數(shù)據(jù)庫的連接地址url中,一定要后綴:
- ?useUnicode=true&characterEncoding=utf-8/hibernate?useUnicode=true&characterEncoding=utf-8
當(dāng)然如果你采用了mysql的管理工具如mysql yog,mysql manager那么你數(shù)據(jù)庫設(shè)定也可以在可視化環(huán)境下直接設(shè)置。當(dāng)然這也只是限制在database的設(shè)定。
以上的相關(guān)內(nèi)容就是對Mysql中文問題解決方案的介紹,望你能有所收獲。
【編輯推薦】