在使用mysql創建數據庫及表格,在navicat中可以正常查詢出中文,但使用jdbc查詢的結果中,中文為亂碼。
網上查到資料,為了能夠徹底一勞永逸的解決這個問題,需要修改mysql下配置文件my.in
打開cmd 使用 mysql -uroot -p 登錄mysql之后,使用這條語句查詢數據庫編碼 show variables like '%char%';
查詢結果編碼有的為lan1編碼 有的是utf8編碼
網上一些修改方法 是在這三個位置添加相關語句
經實驗還是有中文亂碼出現
再次使用show variables like '%char%'; 查詢,發現字符編碼變為utf8 但是連接編碼set_character_connection和其他幾個還是lan1編碼
后來在my.in中[mysqld]標簽最下面發現這樣一段
## UTF 8 Settings
#init_connect=\'SET NAMES utf8\'
#collation_server=utf8_unicode_ci
#character_set_server=utf8
#skip-character-set-client-handshake
#character_sets-dir="D:/xampp/mysql/share/charsets"
前面的井號#表示這是一段被注釋掉的代碼 猜測是用來設置utf8編碼的
而且character_set_server=utf8這一句與網上方法相同,但網上方法並沒有完全改變所有編碼格式
去掉這段代碼前面井號如下:
## UTF 8 Settings
init_connect=\'SET NAMES utf8\'
collation_server=utf8_unicode_ci
character_set_server=utf8
skip-character-set-client-handshake
character_sets-dir="D:/xampp/mysql/share/charsets"
使用show variables like '%char%'; 結果如下:
重新創建數據庫和表,jdbc查詢測試,中文正確顯示。
此外應當注意,jdbc的url后面應當指明編碼格式 如下:
jdbc:mysql://localhost:3306/(這里寫數據庫名,不加括號)?useUnicode=true&characterEncoding=UTF-8。