使用mysqldump 對資料庫進行備份的亂碼問題

來源:互聯網
上載者:User

最近在做項目的工程中,由於系統中需要提供Database Backup的功能,經過網上一番搜尋,覺得採用簡單的mysqldump

Linux下通過mysqldump備份MySQL資料庫成sql檔案

Linux中使用mysqldump對MySQL資料庫進行定時備份

(1)java代碼

String backupSQL = "cmd /c mysqldump -urootdd --extended-insert=false  -hlocalhost fts> "
          + DB_BACKUPFILE_PATH + " ";
   Runtime runtime = Runtime.getRuntime();
   System.out.println(runtime.exec(backupSQL));

通過執行上面的程式碼片段的出來的檔案中,中文部分都已亂碼出現,起初懷疑是資料庫的編碼有關,於是通過以下方式來查詢資料庫的編碼

(2) >show variables like 'character%';

經過以上步驟可以確定資料庫的編碼是沒有問題的,經過再次網上搜尋 得到如下結論

"如果MySQL伺服器上的字元集是 latin1 或者其他的的,mysqldump 出來的中文都是亂碼!一個簡單的辦法是加上預設字元集選項,如:

mysqldump [-h 127.0.0.1 -P 3307 ] -u username --default-character-set=gbk -p databasename > dumpfile.txt,

--default-character-set 知道資料內容是中文時可以指定為 gbk,這樣即使資料庫本身設定字元集為 latin1 出來的檔案中文也能正常!", 最後將代碼改成如下形式

(3)最終java 代碼

String backupSQL = "cmd /c mysqldump -urootdd --default-character-set=gbk --opt --extended-insert=false  -hlocalhost fts> "
                    + DB_BACKUPFILE_PATH + " ";
            Runtime runtime = Runtime.getRuntime();
            System.out.println(runtime.exec(backupSQL));

經過以上修改,終於搞定,匯出的檔案中的中文時正常顯示的

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.