java mysql地址中的 useUnicode=true&characterEncoding=utf-8

useUnicode=true 後面的配置 characterEncoding配置才能生效

 

characterEncoding=utf-8的配置的作用主要配置的是mysql服務端的編碼,mysql驅動的代碼中,會將將要發送mysql服務端的sql使用characterEncoding指定的值進行轉碼,然後將轉碼後的字節發送到mysql服務端

 

而mysql服務端響應的編碼是如何轉換的呢,主要是mysql服務端返回結果的時候,字節流的某一位標識的是當前字段的編碼格式,mysql驅動程序在解析數據時,會使用mysql服務端返回的字段編碼格式進行解碼;解碼後然後通過charset對象的decode方法進行轉碼,這個時候會根據自己項目當前的編碼方式自動識別。

 

 

最後得出的結論:

1. useUnicode=true&characterEncoding=utf-8  主要配置的客戶端發送數據到服務端時候,需要轉換成什麼樣的編碼發送給服務端

2. 客戶端接收到的數據不會出現亂碼,有一個前提,就是數據庫中的數據編碼沒有錯誤的情況下

 

官方也建議我們characterEncoding這個值的配置儘量與mysql服務端的編碼一致

如果不一致,會導致我們看到的結果出現亂碼

 

比如: mysql服務端的編碼爲UTF-8  而這個時候我們配置了 useUnicode=true&characterEncoding=gbk

那麼如果我們這時候插入了一條帶有中文的數據,則此時mysql中的此中文數據爲gbk的

然後我這時候查詢這條數據,mysql會將gbk的數據返回給我們,但告訴我們說 這個是UTF-8編碼的,這個時候mysql驅動包就會用UTF-8的編碼去解碼這段數據,這時候則會出現亂碼

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