2008年5月12日 星期一

Java連MySQL中文亂碼

最近用Java連MySQL,發現中文會產生亂碼,這個問題主要是編碼的問題,不只是MySQL要有一點小改變,Java連資料庫的程式碼也要改一些東西:

先修改MySQL部份:
修改my.cnf檔案:
[client]
default-character-set=utf8

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

重新啟動MySQL。此後建立的資料庫都會用UTF8編碼

修改JDBC連線方式:
原本連線只是單純的輸入url, username, password。
要用UTF8編碼,要加上以下兩個參數:
useUnicode=true
characterEncoding=UTF-8

為了方便,可以將jdbc連線的設定值寫在一個檔案裡。用Properties來讀取:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/accounting2
user=howard
password=howardgogogo
useUnicode=true
characterEncoding=UTF-8


連線方式就變成
ppts.load(new FileInputStream("config.ini"));
Connection conn = DriverManager.getConnection(url, ppts);

0 意見: