Windows服務器中MySql利用MySqlDump導出時漢字亂碼問題

環境:
Windows Server 2012 R2
MySql 5.5.20

導出命令:
mysqldump  --default-character-set=utf8mb4 --hex-blob -uroot -p db1 > C:\db1.sql

問題:導出後,文件中漢字出現亂碼.注意命令中已經指定了編碼爲utf8mb4.

上網搜索問題,有一個人也遇到這種問題,指定編碼後依然爲亂碼.最後發現是mysqldump命令的版本過低.但經過查看,我這個服務器的的mysqldump命令的版本也爲5.5.20.

試驗1:通過Navicat導出的文件漢字正常,不亂碼.

試驗2:試着用mysql -uroot -p --default-character-set=utf8mb4 t < C:\db1.sql命令,試驗導入.這時發現提示“<”運算符是爲將來使用而保留的。太奇怪了,輸入重定向符號都不識別?!

這個時候注意到,原來我一直在Power Shell 命令窗口中執行命令.以前也經常在Power shell中執行各種命令,並沒有發現什麼異常,所以這次也沒考慮PowerShell的問題.但是網友們的導出沒有我這種問題,那還是不用PowerShell窗口了吧.

切換到Cmd中執行導出命令.再次查看導出的文件,漢字正常,不再亂碼.

結論:Windows Server中不要在Power Shell命令窗口中執行mysqldump,會導致指定字符編碼無效!

簡單的查看了下Power Shell與Cmd窗口的屬性,代碼頁都是936GBK,沒有發現其它的區別.
原因未知,以後有時間再分析吧!或者哪位網友知道這方面問題,一起討論下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章