JavaEE技術點:MySQL編碼問題
發布于:2019-05-08   作者:admin   瀏覽:121次

  我們在dos窗口下使用命令操作數據庫時,當向數據庫中插入的數據或從數據庫中查詢的數據中包含中文時,就會出現亂碼。出現亂碼的原因是我們安裝MySQL數據庫服務器時已經指定了編碼是utf8,而dos窗口的默認編碼是gbk,也就是說客戶端與服務器的編碼不一樣,這樣就導致了亂碼。java培訓的小編接下來就來為大家好好的介紹一下吧。

JavaEE技術點:MySQL編碼問題

  使用如下命令可以查看MySQL數據庫編碼:


  lSHOWVARIABLESLIKE'char%'


  數據庫的編碼是utf8,下面我們來介紹其中兩項編碼:


  lcharacter_set_client=utf8:客戶端通知數據庫服務器它的編碼方式:


  ?客戶端即dos窗口發送的數據是gbk編碼;


  ?MySQL使用character_set_client指定的編碼來解讀客戶端發送過來的數據,例如編碼為UTF8;


  ?結果:客戶端發送過來的數據不是UTF8編碼,那么就會出現亂碼;


  lcharacter_set_results=utf8:數據庫服務器向客戶端發送的數據使用utf8編碼:


  ?MySQL會以character_set_results指定的編碼方式將待發送的數據編碼,然后發送給客戶端,例如編碼為UTF8;


  ?客戶端不使用UTF8來解讀,而是使用gbk編碼來解讀;


  ?結果:客戶端不是使用UTF8來解讀,那么就會出現亂碼。


  在dos窗口下向數據庫服務器發送數據,數據中包含中文“張三”,“張三”在dos窗口下是gbk編碼,但是數據庫服務器使用utf8進行解碼,就出現亂碼,因此插入失敗。


  解決辦法:


  l讓客戶端發送utf8的數據:在dos窗口下,它的編碼就是gbk,很難修改,因此該方法是行不通的;


  l將character_set_client的值修改為gbk:通過命令:setcharacter_set_client=gbk通知數據庫服務器客戶端的編碼是gbk,但是該方法有一個局限性,它只在當前dos窗口中有效,只要退出訪問mysql,那么再次登錄時這個值需要重新設置。


快3彩票