JAVA寫入Mysql中文亂碼解決方案,java寫入mysql亂碼
方法一:
頁面傳值中有中文的時候,可以使用filter來搞掂,可是好容易System.out.println可以出中文了,插入到Mysql裡,還是亂碼。(超,你的免費空間可能也是這個問題)
怎麼辦呢,做到以下幾點:
1。建立資料庫的時候:
CREATEDATABASE `Db`
CHARACTERSET'utf8'
COLLATE 'utf8_general_ci';
2.建表的時候:
CREATETABLE `TableA` (
`ID` varchar(
40)NOTNULLdefault'',
`UserID` varchar(
40)NOTNULLdefault'', )
ENGINE=InnoDB DEFAULT CHARSET=utf8;
3.設定URL的時候:
jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8
方法二:
MySQL預設編碼是latin1
我們看到,儘管使用資料庫時我們能夠正常的添加和顯示中文,但是在使用程式串連資料庫時並不能夠正常顯示中文,為此我們需要修改MySQL的預設編碼,編輯my.ini(MySQL設定檔)檔案對編碼進行修改
設定MySQL的預設字元集為utf8,找到用戶端配置[client]在下面添加。
default-character-set=utf8
找到伺服器配置[mysqld]在下面添加
default-character-set=utf8
設定MySQL資料庫以utf8編碼運行,串連MySQL資料庫時使用utf8編碼
停止和重新啟動MySQL
net stop mysql
net start mysql
重新串連資料庫,查看編碼,資料表內容
看回資料庫的顯示,我們會很奇怪的發現為什麼顯示的都是亂碼,這主要是和windows下命令列的編碼有關,在命令列上查看屬性->選項的當前字碼頁:936 (ANSI/OEM - 簡體中文 GBK)(本人機子上是這樣顯示的)
也就是說命令列上使用的是GBK編碼,而我們是在程式串連時使用utf8進行添加的,所以會出現有亂碼,現在我們將用戶端的編碼改成gb2312或gbk試一下
現在可以看到中文正常顯示了(主要是因為utf8也支援中文),所以當我們使用命令列工具串連資料庫的時候最好將用戶端的編碼改一下,如果使用GUI的話就不必了,同時修改用戶端的編碼之後程式依然能夠正常顯示(以上兩點已經測試)
所以如果在程式中要顯示中文的話我們可以選用utf8,gb2312,gbk這三種編碼,但是如果想在命令列添加中文資料或者查看的話就需要將用戶端的編碼設定為gb2312或gbk了,還是那句,CMD的編碼有關