簡體   English   中英

如何在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腳本,以便處理SQL文件,以便在作為powershell腳本運行時(使用powershell控制台)正確插入帶變音符號的字符?

我嘗試將Get-Content -Encoding參數設置為UTF8ASCIIUnicodeOEM但是它們都不導致正確導入數據。

筆記

  • chcpcmd.exe控制台返回852 ,同為powershell控制台以及對PowerShell的ISE。
  • SQL腳本包含描述預期編碼的行,例如/*!40101 SET NAMES utf8 */;
  • 在這兩種情況下, mysql.update2.ini文件僅包含hostportuserpassword設置。

iso-8859-1 Powershell ISE輸出和us-ascii控制台至少在我的PC上,您可以自己檢查變量$OutputEncoding

您可以更改此變量

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

然后它應該在Powershell ISE和Powershell控制台中都可以工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM