来自Powershell和Windows编码的MysqlDump

Mat*_*uGD 9 mysql powershell encoding mysqldump

我正在使用mysqldump从ms-dos命令行导出:

& mysqldump -u root -p --default-character-set=utf8 -W -B dbname 
> C:\mysql_backup.sql
Run Code Online (Sandbox Code Playgroud)

我的数据库/表格用UTF-8编码,我在进行转储时指定了相同的编码.但是当我用Notepad ++或Scite打开文件时,我看到了UTF-16(UCS-2)的编码.如果我在运行导入之前没有将带有iconv的文件转换为UTF-8,则会出现错误.

似乎MS-DOS/CMD.exe默认使用UTF-16重定向.我可以改变吗?

旁注:我使用Powershell来调用mysqldump.

更新:它似乎只在从Powershell调用mysqldump时才会发生.我用我在PS脚本中使用的命令行更改命令行

Kei*_*ill 6

默认情况下,PowerShell将文本表示为Unicode,当您将其保存到文件时,它默认保存为Unicode.您可以使用Out-Filecmdlet而不是>运算符来更改文件保存格式,例如:

... | Out-File C:\mysql_backup.sql -Encoding UTF8
Run Code Online (Sandbox Code Playgroud)

您可能还需要向PowerShell提供有关如何解释来自dump utiltiy的UTF8文本的提示. 此博客文章显示了如果实用程序未输出正确的UTF8 BOM,如何处理此方案.