[精讚] [會員登入]
1521

[Mysql] Mysqldump 的預設編碼 --default-character-set

有時Mysqldump 也得要指定編碼才不會造成匯出的亂碼

分享此文連結 //n.sfs.tw/11028

分享連結 [Mysql] Mysqldump 的預設編碼 --default-character-set@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2019-10-19 04:04:37 最後編修
2017-05-04 00:38:00 By 張○○
 

以前的經驗,寫下來以免忘記。

之前朋友的一個資料庫 BIG5 要我幫忙轉成 utf-8 的編碼。發現:

[資料庫 DB1]-->mysqldump --> 餵回[資料庫 DB2]   只能用原始程式開啟無亂碼,console或phpmyadmin中都是亂碼。
[資料庫 DB1]-->mysqldump --> piconv  -f big5 -t utf8 -->轉成一堆亂碼-->餵回[資料庫 DB2]  都是亂碼。

於是我仔細研究他的資料庫,以及他的程式的存取方法,發現是這樣的:

show variables like 'character%';

資料庫校對:utf8_bin
資料庫連線:latin1

character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem binary
character_set_results latin1
character_set_server latin1
character_set_system utf8

資料庫內容:big5

這意思是不是說?

  存放在 utf8 編碼的資料庫中的 big5 編碼字元,但是要用latin1 的編碼連線取出

不,我後來又想了想,猜測應該是:

  big5的字元(中文字2字元)用latin1的字元集(character set)來保存,所以取時,也用同樣的字元集來取出。至於資料庫校對(utf8)和取出連線沒有關係。

  如果我沒有指定字元集,就會用預設的(可能是utf8)來取出資料庫中的資料,那可能會把字元組合切得亂七八糟(例如原本二個字元組一個big5中文字,在latin1中拆成一個一個獨立字元,結果用utf8的規則取出來,可能三個字元取出當一個中文字。

做了很多失敗的嘗試,後來才想到,那取出時就一定要先指字編碼的方式,才會是正常的結果。

所以我改下指令來 dump 時,把預設的 charset 寫入。

$ mysqldump --default-character-set=latin1 -u root -p -B DB1 > DB1_in_big5.sql

然後再 iconv

$ piconv -f big5 -t utf8 DB1_in_big5.sql> DB1_in_utf8.sql

最後再餵回去,成功。

這樣,我就順利的把資料庫 BIG5 全部轉成 utf-8 的編碼再餵回去。


原文 2010-04-24 17:46:55

END

你可能感興趣的文章

[Mysql/Mariadb] Left Join 和 Right Join 合併表單 SQL語法中的 Left Join 和 Right Join 很常用,但是我常會忘記,所以寫下來備忘。

[Mysql] 使用union合併兩個表 mysql合併兩個表的方法,使用union

[Mysql/MariaDB] 加解密函數 Mysql/MariaDB上的加解密函數

[Mysql/MariaDB] 使用 LOCATE, POSITION, INSTR來取代 like [Mysql/MariaDB中使用LOCATE, POSITION, INSTR來取代 like的方法

[Mysql] 修改資料庫預設校對或編碼 修改資料庫預設校對或編碼的方法

[Mysql] 建立叢集式資料庫3/4 -- DB1設置及DB PROXY 使用galera建立Mysql的叢集式資料庫 ,繼續修正第1DB及運作PROXY

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

[Freebsd] 定時測試 ADSL 是否斷線並重連 中華電信 ADSL 雖有固定 ip,可是他卻會不定時「斷線」, 使用以下的 方法可以定時測試是否斷線,以及重新撥接。

安裝SPHINX支援中文 新版本的 sphinx 和舊版不同,網路上很多範例和教學是不能用的。此文是安裝和設定方法分享

世紀帝國征服者新版本--被遺忘的帝國 世紀帝國征服者新版本--被遺忘的帝國 世紀二代的征服者是精典遊戲中的精典,aofe更好玩...

設計的工作絕不接受比價 拿買陽春麵的價格想買牛肉麵,寧願倒掉也不賣

網頁的標頭(head)搜尋引擎和FB最佳化 網頁的標頭(head)搜尋引擎和facebook最佳化