標籤:
在用 jdbc 向 mysql 資料庫插入中文時出現了亂碼,嚴格來說是通過 Hibernate。記錄下搜尋和查文檔以後找到的解決辦法。
如果你使用的是 gbk 編碼的話把上面所有提到 utf8 的地方改成 gbk 應該就可以了,只要伺服器和用戶端使用的字元集編碼統一就可以了。
mysql 命令列用戶端預設使用的字元集也是 latin1,如果你通過這個來插入中文的話也會出現亂碼的情況。解決的辦法是執行語句 set names ‘utf8‘ 來告訴伺服器使用 UTF-8 編碼來和用戶端通訊。你也可以使用 set charset ‘utf8‘,它和 set names 區別只在於 collation 上。set names 和 set charset 都相當於執行了三條語句,具體的內容可以去看 mysql 文檔 10.4 節。我想這個方法在使用 jdbc 的時候也是可以的,所以如果 jdbc 的指定資料庫地址中沒有告知使用的字元集編碼的話可以通過執行上面的語句來達到相同的效果。
先說一下我的環境,windows XP,mysql5.0安裝版,rails1.2.3。
試過的解決方案有3種:
1。重新利用 MySQL Server instance Config Wizard嚮導,重新Reconfigure Instance。改編碼為utf8
2。修改MySQL檔案夾下的my.ini檔案。如下:
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
3。SET character_set_client =utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
可輸入mysql>SHOW VARIABLES LIKE ‘%character%‘ ;命令查看效果。
以上方式前2種其實是一個原理,看你習慣怎麼改罷了,而設定的值正是中的character_set_database和character_set_server.
這些都是網上一搜一大片的處理方式,在這裡也做一個總結。但我通過以上方式去做了以後,非但亂碼問題沒有解決,而且資料庫表中再無法插入中文。
jdbc串連mysql 時的中文亂碼問題解決