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

时间:2015-05-19 15:03:05

标签: mysql powershell encoding utf-8 cmd

我有MySQL的{​​{1}}文件,该文件在SQL中编码,名为UTF8(由data.sql命令生成)。

  1. 如果我在mysqldump控制台中运行以下文件,则说明文件已正确处理。

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

    ??
  3. 如果我从Powershell ISE运行相同的代码,则会使用正确的编码导入脚本。

  4. 如何修复Get-Content "data.sql" | & 'mysql' --defaults-file=mysql.update2.ini --batch --raw --database=test1 --default-character-set=utf8 脚本以便处理SQL文件,以便在作为powershell脚本(使用powershell控制台)运行时正确插入带有变音符号的字符?< / p>

    我尝试将powershell的{​​{1}}参数设置为-EncodingGet-ContentUTF8ASCII,但这些参数均未导致正确导入的数据。

    注释

    • Unicode控制台中的OEM返回chcpcmd.exe控制台以及Powershell ISE也是如此。
    • 852脚本包含描述预期编码的行,如powershell
    • 在这两种情况下,SQL文件仅包含/*!40101 SET NAMES utf8 */;mysql.update2.inihostport设置。

1 个答案:

答案 0 :(得分:4)

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

来自行检查

您可以更改此变量

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

然后它应该在Powershell ISE和Powershell控制台中都可以使用