2015-05-19 83 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

相關問題