cod*_*ike 3 powershell powershell-7.2
Notepad++ 表示 CSV 文件是 Ansi 编码的。
Powershell 7 Import-CSV commandlet 有各种 -Encoding 选项,但“Ansi”不是其中之一。
如何让 Powershell 读取此 CSV 而不会损坏它?
-Encoding 的选项有:
要使用ANSI 编码,即活动遗留系统区域设置(非 Unicode 程序的语言)隐含的特定代码页,例如Windows-1252:
在Windows PowerShell中:
-Encoding Default
Run Code Online (Sandbox Code Playgroud)
在您正在使用的PowerShell (Core) 7+中,Default现在指的是 UTF-8,因此需要更多工作:
在 PowerShell v7.3-中:
-Encoding ([cultureinfo]::CurrentCulture.TextInfo.ANSICodePage)
Run Code Online (Sandbox Code Playgroud)
在 PowerShell v7.4+中:[1]
-Encoding Ansi
Run Code Online (Sandbox Code Playgroud)
两个 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)UTF-8。
[1] 早期 PowerShell(核心)版本中缺少值Ansi -Encoding是一个奇怪的遗漏,因为Oem值(针对活动 OEM 代码页)始终存在 -有关背景故事,请参阅GitHub 问题 #6562 。
| 归档时间: |
|
| 查看次数: |
1801 次 |
| 最近记录: |