[英]How to process a file in correct encoding in powershell?
我有一個MySQL
的SQL
文件,該文件以UTF8
編碼,稱為data.sql
(由mysqldump
命令生成)。
如果我在cmd.exe
控制台中運行以下命令,則文件已正確處理。
mysql --defaults-file=mysql.update2.ini --batch --raw --database=test1 --default-character-set=utf8 < "data.sql"
如果我在powershell
控制台中運行以下命令,則會以錯誤的編碼方式插入數據(導致使用??
而不是帶有變音符號的字符)。
Get-Content "data.sql" | & 'mysql' --defaults-file=mysql.update2.ini --batch --raw --database=test1 --default-character-set=utf8
如果我從Powershell ISE運行相同的腳本,則會使用正確的編碼導入腳本。
如何修復powershell
腳本,以便處理SQL文件,以便在作為powershell
腳本運行時(使用powershell
控制台)正確插入帶變音符號的字符?
我嘗試將Get-Content
-Encoding
參數設置為UTF8
, ASCII
, Unicode
或OEM
但是它們都不導致正確導入數據。
筆記
chcp
在cmd.exe
控制台返回852
,同為powershell
控制台以及對PowerShell的ISE。 SQL
腳本包含描述預期編碼的行,例如/*!40101 SET NAMES utf8 */;
mysql.update2.ini
文件僅包含host
, port
, user
和password
設置。 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.