首頁  >  文章  >  資料庫  >  如何解決mysql個別文字亂碼的問題

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

藏色散人
藏色散人原創
2020-11-02 09:59:271993瀏覽

mysql個別文字亂碼的解決方法:先開啟server\MySQL資料夾;然後開啟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內就會被轉換成問號。

解決方法:

一勞永逸的方法,小編直接在server\MySQL資料夾內,將my.ini檔案修改了。

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

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

以上是如何解決mysql個別文字亂碼的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn