如何在 powershell 中以正确的编码处理文件?

How to process a file in correct encoding in powershell?

我有一个 MySQLSQL 文件,它在 UTF8 中编码,名为 data.sql(由 mysqldump 命令生成)。

  1. 如果我 运行 在 cmd.exe 控制台中执行以下操作,文件将得到正确处理。

    mysql --defaults-file=mysql.update2.ini --batch --raw --database=test1 --default-character-set=utf8 < "data.sql"
    
  2. 如果我 运行 在 powershell 控制台中输入以下数据,数据将以错误的编码插入(导致 ?? 而不是带有变音符号的字符)。

    Get-Content "data.sql" | & 'mysql' --defaults-file=mysql.update2.ini --batch --raw --database=test1 --default-character-set=utf8
    
  3. 如果我从 Powershell ISE 运行 相同,脚本将以正确的编码导入。

如果 运行 作为 powershell 脚本(使用powershell 控制台)?

我尝试将 Get-Content-Encoding 参数设置为 UTF8ASCIIUnicodeOEM,但两者都没有导致正确导入数据。

备注

iso-8859-1 中的 Powershell ISE 输出和 us-ascii 中的控制台 至少在我的电脑上,你可以通过检查变量 $OutputEncoding

自己检查

您可以更改此变量

$OutputEncoding = New-Object -typename System.Text.UTF8Encoding

然后它应该在 Powershell ISE 和 Powershell 控制台中工作