mysql遇到的亂碼問題

下午再SQLyong導入了一個DB。發現寫入和讀取的時候都是?問號,立刻想到可能是數據庫的編碼問題,

於是設置了數據裏的編碼。 create database db_name character set utf8;

發現仍有問號出現,可能是程序和工作空間的問題,查看了編碼都是一致的utf-8,

用debug斷點逐步查看,寫入到數據庫的是中文,但是在數據庫顯示的也是?。

這就奇怪了,程序和數據庫都是統一的編碼。後來在C3P0加了行代碼,解決了問題。

<propertyname="jdbcUrl">jdbc:mysql://localhost:3306/ebookstore?useUnicode=true&characterEncoding=UTF-8</property>

 

但是爲什麼加上這個就可以了呢?

 

添加的作用是:指定字符的編碼、解碼格式。

  例如:mysql數據庫用的是gbk編碼,而項目數據庫用的是utf-8編碼。這時候如果添加了useUnicode=true&characterEncoding=UTF-8  ,那麼作用有如下兩個方面:

1. 存數據時:

數據庫在存放項目數據的時候會先用UTF-8格式將數據解碼成字節碼,然後再將解碼後的字節碼重新使用GBK編碼存放到數據庫中。

2.取數據時:

在從數據庫中取數據的時候,數據庫會先將數據庫中的數據按GBK格式解碼成字節碼,然後再將解碼後的字節碼重新UTF-8格式編碼數據,最後再將數據返回給客戶端。

注意:在xml配置文件中配置數據庫utl時,要使用&的轉義字符也就是&amp;

例如:<property name="url" value="jdbc:mysql://localhost:3306/email?useUnicode=true&amp;characterEncoding=UTF-8" />

【百度答案來源:CSDN ID:JAVA愛好者】

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章