如何解決mysql個別文字亂碼的問題

mysql個別文字亂碼的解決方法:首先打開serverMySQL文件夾;然后打開my.ini文件;最后添加代碼為“character_set_server=gbk”即可。

如何解決mysql個別文字亂碼的問題

推薦:《mysql視頻教程

java網站MySQL數據庫個別文字亂碼問題

亂碼問題很讓人頭疼,特別是極其少量的亂碼。這里分享一個個人開發過程中遇到的一個亂碼問題,希望能對大家有所幫助。

方法/步驟

檢查亂碼出現位置——前臺。

這里小編通過火狐瀏覽器的firebug工具檢查了前臺jsp頁面,發現post的的確是utf8的數據。所以,排除前臺傳送數據時產生亂碼。

檢查亂碼出現的位置——后臺。

因為同事用來接收前臺數據的是struts formbean的方式,所以小編不是很了解,就用了個笨辦法:找到產生亂碼的數據傳遞過程,對于過程中經過的每個方法都添加一個輸出,在后臺查看輸出的數據。

結果,這些數據也是正常的。

檢查亂碼出現位置——MySQL數據庫。

當排除了前后臺,那么只剩下數據庫了。那么問題就在數據庫上了。

小編先在數據庫里直接數據了亂碼的漢字,發現可以存儲。排除了數據庫表的文字編碼問題。

之后小編在工具軟件中查詢了一下(語句:show variables like ‘%char%’;),結果如下圖。問題一下子發現了:由于gb2312中漢字并不全,所以一些漢字是沒有編碼的,此時這些漢字就會被強制轉換為“?”,至此這個漢字的數據就丟失了,而且不可還原。

如何解決mysql個別文字亂碼的問題

原因詳解:

MySQL數據庫的數據進出實際上是有幾道轉換手續的。

其中進入的時候:character_set_client轉character_set_connection轉character_set_server存入數據庫。

而取出的時候:數據庫取出轉character_set_server轉character_set_result。

這樣大家應該明白了吧,進出數據庫的數據都要經過character_set_server轉換,所以無論是前臺的正確的漢字還是數據庫內正確的漢字,只要不在gb2312內就會被轉換成問號。

解決方法:

一勞永逸的方法,小編直接在serverMySQL文件夾內,將my.ini文件修改了。

修改過程為:找到[mysqld]再向下找幾行發現“default_character_set=utf8”,在該行下添加一行“character_set_server=gbk”。

當然不是必須用gbk,小編是為了小心起見用了國標擴展,即gb2312的擴展gbk。

以上就是如何解決

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享