Notepad 說 CSV 檔案是 Ansi 編碼的。
Powershell 7 Import-CSV commandlet 具有各種 -Encoding 選項,但“Ansi”不是其中之一。
如何讓 Powershell 在不破壞它的情況下讀取此 CSV?
-Encoding 的選項有:
- ASCII
- 大端unicode
- bigendianutf32
- OEM
- 統一碼
- utf7
- utf8
- utf8BOM
- utf8NoBOM
- utf32
uj5u.com熱心網友回復:
要使用ANSI 編碼,即活動遺留系統語言環境(非 Unicode 程式的語言)隱含的特定代碼頁,例如Windows-1252:
在Windows PowerShell中:
-Encoding Default在您正在使用的PowerShell (Core) 7 中,
Default現在指的是 UTF-8,因此需要做更多的作業:-Encoding ([cultureinfo]::CurrentCulture.TextInfo.ANSICodePage)
PowerShell (Core) 7 中缺少Ansi -Encoding值是一個奇怪的遺漏,因為Oem確實存在一個值(用于活動 OEM 代碼頁) - 請參閱GitHub 問題 #6562進行討論。
兩個 PowerShell 版本中的默認字符編碼:
Windows PowerShell,舊版,僅限 Windows,附帶 Windows 版本(其最新和最后一個版本是 v5.1.x),默認為關鍵區域中的活動 ANSI 代碼頁- 特別是
Get-Content/Set-Content以及當 PowerShell 引擎讀取源代碼時代碼 - 但默認值在內置 cmdlet 中差異很大;例如:Import-Csv默認為 UTF-8;請參閱此答案的底部以獲取概述。PowerShell (Core)是現代的、按需安裝的跨平臺版本(從 v6 開始,目前為 v7.2.x),幸運的是,現在始終默認為(BOM-less) UTF-8。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/517240.html
