mysqldump 匯出中文亂碼

2021-07-25 16:00:14 字數 1219 閱讀 1386

需求:匯出乙個測試庫的資料(資料庫不大,就幾張表)

匯出命令:

mysqldump -uroot -p --single-transaction --master-data=2 --triggers -f -r -e --databases test>test.sql

現象:檢視test.sql中文居然是這個樣子的 '浼氳瘽鍚嶇о'。

但是這個命令匯出這套環境的其它包含中文的庫確是正常的。

問題分析:

什麼原因呢?先不管中文亂碼的問題,先把備份的資料匯入到新庫看看,居然中文顯示正常。這也是乙個比較投機的做法,很多人看到亂碼,就不敢繼續操作了。

為什麼敢這麼做呢?因為之前老大的一句話,「計算機是一門實驗科學,只相信被實驗證明過的東西」。

既然匯入後中文顯示正常,還用去找亂碼的原因嗎? 

vim :set fileencoding 檢視檔案編碼 居然是latin1,能正常顯示中文的備份檔案時utf-8

為什麼呢?懷疑是表結構或資料有問題。

只匯出表結構,居然中文顯示正常。

mysqldump -uroot -p --single-transaction --master-data=2 --triggers -f -r -e -d --databases test>test.sql

同時匯出表結構和資料,顯示亂碼。猜想可能是資料有問題了。但資料在原庫中文顯示是正常的啊。

。。。。。。

在仔細分析一下表結構,原來有blob型別。這下亂碼就不奇怪了。

在原命令的基礎上加上--hex-blob,搞定。

這個引數的含義是用16進製制的方式匯出binary, varbinary, blob型別的資料。

--hex-blob dump binary strings (binary, varbinary, blob) in hexadecimal format.

mysqldump -uroot -p --single-transaction --master-data=2 --triggers -f -r -e --hex-blob --databases test>test.sql

其實在我們的備份指令碼中早已經把這個引數加進去了,只是我們沒有引起足夠的重視罷了。

mysqldump 匯出中文亂碼

命令 mysqldump uroot p test data test.sql 匯出後的資料庫開啟是亂碼,如下 開始以為開啟的方式不對,就用記事本開啟後,用utf 8的編碼格式另儲存下 結果開啟後,仍然是亂碼。這時候,猜測是不是資料庫的字符集的編碼有問題,然後進入資料庫,輸入命令 show vari...

mysqldump出現亂碼

如果mysql伺服器上的字符集是 latin1 或者其他的的,mysqldump 出來的中文都是亂碼!乙個簡單的辦法是加上預設字符集選項,如 mysqldump h 127.0.0.1 p 3307 u username default character set gbk p databasenam...

mysqldump匯出引數

mysqldump匯出引數 資料庫 zongfeng 發表於2005 09 29 比較詳細 mysqldump命令位於mysql bin 目錄中 mysqldump 工具很多方面類似相反作用的工具mysqlimport。它們有一些同樣的選項。但mysqldump能夠做更多的事情。它可以把整個資料庫裝...