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,没有发现其它的区别.
原因未知,以后有时间再分析吧!或者哪位网友知道这方面问题,一起讨论下

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