嘗試使用了PowerShell執行mysqldump命令導出對應的表和數據,發現導出的text字段有亂碼,猜測應該是字符集的問題,查看導出的sql文件發現所使用的字符集是utf-16,而數據庫的默認字符集是utf-8。
使用的執行語句如下:
mysqldump -uroot -p --default-character-set=UTF8 --databases test_db --tables tbl_test --hex-blob > E:\Temp\tbl_test.sql
網絡上查閱了相關資料,發現一人提及的相關的解決方式,解決方法如下:
將'>'操作符替換爲"| Out-File C:\tbl_test.sql -Encoding UTF8"
於是語句調整爲:
mysqldump -uroot -p --default-character-set=UTF8 --databases test_db --tables tbl_test --hex-blob | Out-File E:\Temp\tbl_test.sql -EnCoding UTF8
執行後,tbl_test.sql文件打開的默認編碼已經是utf-8,但是text字段依然還是亂碼。
又查找了一番資料發現,官網有提及該問題的處理方式,如下圖:
鏈接地址: https://dev.mysql.com/doc/refman/5.5/en/mysqldump.html
於是語句調整爲
mysqldump -uroot -p --default-character-set=UTF8 --databasestest_db --tables tbl_test --hex-blob --result-file=E:\Temp\tbl_test.sql
執行後,問題解決。
若用cmd.exe執行最初的語句是沒有問題的,以前沒有關注過這個問題,一直以爲PowerShell就是cmd.exe的升級版,不會引起其他問題。所以日後若要使用PowerShell要特別關注下字符集的問題。