mysql個別文字亂碼的解決方法:先開啟server\MySQL資料夾;然後開啟my.ini檔案;最後新增程式碼為「character_set_server=gbk」即可。
推薦:《mysql影片教學》
java網站MySQL資料庫個別文字亂碼問題
亂碼問題很讓人頭疼,特別是極少量的亂碼。這裡分享一個個人開發過程中遇到的一個亂碼問題,希望能對大家有幫助。
方法/步驟
檢查亂碼出現位置-前台。
這裡小編透過火狐瀏覽器的firebug工具檢查了前台jsp頁面,發現post的確是utf8的資料。所以,排除前台傳送資料時產生亂碼。
檢查亂碼出現的位置-後台。
因為同事用來接收前台資料的是struts formbean的方式,所以小編不是很了解,就用了個笨辦法:找到產生亂碼的資料傳遞過程,對於過程中經過的每個方法都新增一個輸出,在後台查看輸出的資料。
結果,這些數據也是正常的。
檢查亂碼出現位置-MySQL資料庫。
當排除了前後台,那就只剩下資料庫了。那麼問題就在資料庫上了。
小編先在資料庫裡直接資料了亂碼的漢字,發現可以儲存。排除了資料庫表的文字編碼問題。
之後小編在工具軟體中查詢了一下(語句:show variables like '%char%';),結果如下圖。問題一下子發現了:由於gb2312中漢字並不全,所以一些漢字是沒有編碼的,此時這些漢字就會被強制轉換為“?”,至此這個漢字的數據就丟失了,而且不可還原。
原因詳解:
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中文網其他相關文章!