2015-05-19 78 views
1

我有一个MySQLSQL文件,它编码在UTF8中,被称为data.sql(它由mysqldump命令生成)。如何在PowerShell中以正确的编码处理文件?

  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中,脚本导入与正确的编码。

所以SQL文件处理,使得具有变音符号的字符,如果运行的powershell脚本(使用powershell控制台)正确插入如何修复powershell脚本?

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

  • 所述的chcpcmd.exe控制台返回852,同为powershell控制台以及用于Powershell的ISE。
  • SQL脚本包含描述像/*!40101 SET NAMES utf8 */;
  • 在两种情况下mysql.update2.ini文件包含hostport,仅userpassword设置旨在编码线。

回答

2

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

你可以改变这个变量

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

然后检查这个自己应该可以在Powershell ISE和Powershell Console中工作

+0

我在'windows-1250'上有ISE,在'us-ascii'上有控制台。在设置'$ OutputEncoding = [System.Text.Encoding] :: GetEncoding(1250)'后,它按照预期导入。 – alik

相关问题