因為某**頁面動態部分亂碼,檢查發現資料庫內儲存的漢字全部變成亂碼了。
**和資料庫的配置都是utf8的,檢查發現資料庫varchar內的存的字串變為latin1編碼了,應該是****錯誤,回寫內容時把漢字都寫亂了。
現在的情況是字段編碼型別和庫預設編碼都是utf8,但漢字的二進位制格式是latin1儲存,最要緊的是盡快恢復資料庫的正確編碼。
登入mysql shell,用charset latin1;select ..檢視,漢字正常顯示出來了,有望恢復。
用mysqladministrator和sqlyog嘗試匯出,無法指定編碼,匯出來為按字段編碼而預設的utf8亂碼的文字檔案,我安裝的editplus不支援latin1開啟,沒法轉碼。
換種方法,登入mysql shell,用create temporay table .. select .. convert(.. using utf8),臨時表內的varchar欄位還是latin1的內容存在utf8欄位。更改欄位的編碼型別,入linux shell,按latin1格式mysqldump到表備份,用iconv命令轉換,rpwt,我的iconv不起作用,轉了還是亂碼。 _o_
現在煩惱的是,字段明明是utf8,但是欄位的二進位制格式偏偏不對,工具都按utf8去讀取。
查手冊mysqldump雖然有--default-character-set 引數,可惜新版下不起作用,必須附加--compatible=mysql40 引數。
在linux shell輸入:
mysqldump -u帳號 -p密碼 --compatible=mysql40 --default-character-set=latin1 庫名 表名 | mysql -u帳號 -p密碼 庫名 --default-character-set=utf8
成功,漢字終於回來了。
字元編碼亂碼處理
python3預設編碼是unicode 而python2是ascii碼。windows環境預設是gbk編碼。1.python直譯器的預設編碼 2.python原始檔檔案編碼 3.terminal使用的編碼 4.作業系統的語言設定 一 編碼的種類 i ascii 佔1個位元組,只支援英文 ii gb2...
php 轉換中文亂碼,php中文編碼轉換問題
php中文編碼轉換的方法 1 使用iconv函式,為 string iconv string in string out string str 2 使用 mb convert encoding 函式。php中文編碼轉換的方法 一 iconvstring iconv string in charset...
mysql中文編碼 修改mysql中文亂碼
我們在工作中建立的資料庫時常會出現中文亂碼的情況,雖然我們在建立資料庫的時候選擇了utf 8格式,但是依然會出現中文亂碼 下面我把個人經驗介紹給大家 首先建立資料庫的時候,選擇utf 8和utf8 general ci 但是在使用的時候還是插入不了中文,如下圖 上網查詢了很多資料,現在總結一下 首先...