總網頁瀏覽量

2013年1月21日 星期一

sqlyog字元亂碼

原始資料:中文字表單
原本編碼是latin1
已經針對許功蓋的問題,處理過資料
將"功""蓋""許"等會與ascii code衝碼的字
在其後加上反斜線"\"

將資料庫丟在C:\programdata\...\MySQL server5.5資料夾底下
重啟mysql,匯入資料庫成功。
打上use charweb;,來到資料庫charweb底下
打上status;發現Db characterset的參數是latin1
其他的characterset參數皆為utf8
現在我們下指令
set character_set_results = latin1;
那麼select可以正常顯示中文


但是用sqlyog做如上設定之後做select也依然顯示亂碼
這是因為sqlyog的在select時候將資料以utf8呈現
因此才出現亂碼。
(我猜是應該是反斜線的問題)



當用mysql將資料dump出來時系統會預設儲存成utf8,這時用記事本打開這檔案會是亂碼。
因此我們要將dump時要儲存成latin1這時打開記事本,可以正常顯示中文,接著我們將latin1字眼設定成utf8

sqlyog備份預設也是utf8
SET character_set_results = latin1;

SET character_set_database = utf8;
//資料庫裡面資料的編碼

SET character_set_results = big5;
//mysqlserver輸出給client端的編碼




dump備份資料夾先將資料匯出來,以latin1編碼匯出,與原始資料的編碼一致性。這樣記事本打開才不會亂碼
C:\>mysqldump -u root -p123456 --default-character-set=latin1 charweb > charweb3.sql

接著打開.sql檔案,將latin1改成utf8
並且將反斜線去掉

之後source 路徑\xxx.sql 將資料庫重新匯入
finish


心得:cmd在繁體中文系統下只看得懂big5,只有cmd之下select資料庫有許功蓋的問題,因此只要將原始資料的反斜線去掉就可以在sqlyog顯示正常文字

沒有留言:

張貼留言