溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mysql個別文字亂碼怎么辦

發(fā)布時間:2020-11-03 09:59:36 來源:億速云 閱讀:130 作者:小新 欄目:MySQL數(shù)據(jù)庫

小編給大家分享一下mysql個別文字亂碼怎么辦,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

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

java網(wǎng)站MySQL數(shù)據(jù)庫個別文字亂碼問題

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

方法/步驟

檢查亂碼出現(xiàn)位置——前臺。

這里小編通過火狐瀏覽器的firebug工具檢查了前臺jsp頁面,發(fā)現(xiàn)post的的確是utf8的數(shù)據(jù)。所以,排除前臺傳送數(shù)據(jù)時產(chǎn)生亂碼。

檢查亂碼出現(xiàn)的位置——后臺。

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

結(jié)果,這些數(shù)據(jù)也是正常的。

檢查亂碼出現(xiàn)位置——MySQL數(shù)據(jù)庫。

當(dāng)排除了前后臺,那么只剩下數(shù)據(jù)庫了。那么問題就在數(shù)據(jù)庫上了。

小編先在數(shù)據(jù)庫里直接數(shù)據(jù)了亂碼的漢字,發(fā)現(xiàn)可以存儲。排除了數(shù)據(jù)庫表的文字編碼問題。

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

mysql個別文字亂碼怎么辦

原因詳解:

MySQL數(shù)據(jù)庫的數(shù)據(jù)進出實際上是有幾道轉(zhuǎn)換手續(xù)的。

其中進入的時候:character_set_client轉(zhuǎn)character_set_connection轉(zhuǎn)character_set_server存入數(shù)據(jù)庫。

而取出的時候:數(shù)據(jù)庫取出轉(zhuǎn)character_set_server轉(zhuǎn)character_set_result。

這樣大家應(yīng)該明白了吧,進出數(shù)據(jù)庫的數(shù)據(jù)都要經(jīng)過character_set_server轉(zhuǎn)換,所以無論是前臺的正確的漢字還是數(shù)據(jù)庫內(nèi)正確的漢字,只要不在gb2312內(nèi)就會被轉(zhuǎn)換成問號。

解決方法:

一勞永逸的方法,小編直接在server\MySQL文件夾內(nèi),將my.ini文件修改了。

修改過程為:找到[mysqld]再向下找?guī)仔邪l(fā)現(xiàn)“default_character_set=utf8”,在該行下添加一行“character_set_server=gbk”。

當(dāng)然不是必須用gbk,小編是為了小心起見用了國標(biāo)擴展,即gb2312的擴展gbk。

看完了這篇文章,相信你對mysql個別文字亂碼怎么辦有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI