JAVA寫入Mysql中文亂碼解決方案,java寫入mysql亂碼

來源:互聯網
上載者:User

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的編碼有關

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.