Powershell-如何读取Ansi CSV文件



Notepad++表示CSV文件是Ansi编码的。

Powershell 7 Import CSV commandlet有各种-Encoding选项,但"Ansi"不是其中之一。

如何让Powershell在不损坏CSV的情况下读取它?

-编码的选项有:

  • ascii
  • bigendianonicode
  • bigendianutf32
  • oem
  • unicode
  • utf7
  • utf8
  • utf8OM
  • utf8NoBOM
  • utf32

使用ANSI编码,即活动遗留系统区域设置(非Unicode程序的语言(所暗示的特定代码页,如Windows-1252:

  • Windows PowerShell中:

    -Encoding Default
    
  • 在您正在使用的PowerShell(Core(7+中,Default现在指的是UTF-8,因此还需要做更多的工作:

    • 在PowerShell中v7.3-:

      -Encoding ([cultureinfo]::CurrentCulture.TextInfo.ANSICodePage)
      
    • 在PowerShell中v7.4+[1]

      -Encoding Ansi
      

两个PowerShell版本中的默认字符编码

  • Windows PowerShell ,旧版,仅限Windows,附带Windows版本(其最新版本和最后一个版本为v5.1.x(,默认为区域中的活动ANSI代码页,特别是Get-Content/Set-Content以及PowerShell引擎读取源代码时,但的默认值在内置cmdlet中差异很大;示例:Import-Csv默认为UTF-8;有关概述,请参阅此答案的底部部分。

  • PowerShell(核心( ,现代的、按需安装的跨平台版本(从v6开始,目前为v7.2.x(,幸运的是,现在始终默认为(无BOM(UTF-8


[1]早期PowerShell(Core(版本中缺少Ansi-Encoding值是一个奇怪的遗漏,因为Oem值(用于活动OEM代码页(一直存在-有关背景故事,请参阅GitHub问题#6562

最新更新