如下:這里的UTF-8和GBK分表表示什么作用?將表的資料按照GBK編碼讀出來?抑或是按照UTF-8編碼讀出來?
DBURL="jdbc:mysql://localhost:3306/"+dbname+"?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8";
DBURL="jdbc:mysql://localhost:3306/"+dbname+"?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=GBK";
uj5u.com熱心網友回復:
characterEncoding= 作用是指定所處理字符的解碼和編碼的格式,或者說是標準。uj5u.com熱心網友回復:
如樓上所說,如果服務器編碼和你指定的不同,則服務器端會在讀取和回傳時,自動做編碼轉換。同樣的, 你從本地讀取資料,比如是GBK的,如果編碼和你指定的不一樣,比如指定了UTF8,而你又沒有主動從GBK轉碼UTF8,那就會造成存入資料庫的資料處理錯誤。
uj5u.com熱心網友回復:
謝謝,啥意思?
首先我的資料庫表里保存的字符,是UTF-8的,也可能是GBK編碼的
我想實作,資料庫里不管是UTF-8還是GBK,保存到String或者HASMAP里都統一成UTF-8
請教如何實作?
謝謝
uj5u.com熱心網友回復:
這個只能你自己在代碼中做判斷去處理。你資料庫如果UTF-8跟GBK都存分,很容易導致亂碼問題的,最好統一編碼格式。
例如:mysql資料庫用的是gbk編碼,而專案用的是utf-8編碼。這時候如果添加了useUnicode=true&characterEncoding=UTF-8 ,那么作用有如下兩個方面:
存資料時:
資料庫在存放專案資料的時候會先用UTF-8格式將資料解碼成位元組碼,然后再將解碼后的位元組碼重新使用GBK編碼存放到資料庫中。
取資料時:
在從資料庫中取資料的時候,資料庫會先將資料庫中的資料按GBK格式解碼成位元組碼,然后再將解碼后的位元組碼重新按UTF-8格式編碼資料,最后再將資料回傳給客戶端。
uj5u.com熱心網友回復:
如樓上所說,如果服務器編碼和你指定的不同,則服務器端會在讀取和回傳時,自動做編碼轉換。
同樣的, 你從本地讀取資料,比如是GBK的,如果編碼和你指定的不一樣,比如指定了UTF8,而你又沒有主動從GBK轉碼UTF8,那就會造成存入資料庫的資料處理錯誤。
謝謝大神,不是很理解
uj5u.com熱心網友回復:
服務器是UTF8字符集的,你本地資料是GBK的, 你怎么辦?反之也有這個問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/283926.html
標籤:Java SE
