utf8、utf8BOM、utf8NoBOM Powershell 编码

utf8、utf8BOM、utf8NoBOM Powershell 编码

我编写了几个 powershell 自动化脚本,有时需要编辑 linux OS 系列使用的文件。

我知道 Windows 使用标志来结束文件中的字符串CR LF,而 Linux 仅使用标志LF。两者还使用不同版本的utf8编码。虽然 Windows 能够读取 Linux 编写的文件,但相反的情况却不一样,这实际上会在 Linux 中读取 Windows 编写的文件时造成问题。

然而,似乎还有更多问题:我发现 Windows 使用,并且与 Linux 相比,它utf8BOM实际上并不完全支持简单编码。utf8

我的问题是:使用set-contentcmdlet时,powershell默认使用的编码是。在写入文件时使用参数时,和utf8NoBOM之间有什么实际区别?utf8utf8BOMutf8NoBOM-Encoding

来自微软的 Set-Content 手册页:

-编码

指定目标文件的编码类型。默认值为utf8NoBOM

  • utf8:以 UTF-8 格式编码。
  • utf8BOM:使用字节顺序标记 (BOM) 以 UTF-8 格式编码
  • utf8NoBOM:以无字节顺序标记 (BOM) 的 UTF-8 格式编码

答案1

这不是 Powershell 特有的东西。这是行业格式规范。因此,只需在网上单独搜索每种编码即可获得详细信息。

https://en.wikipedia.org/wiki/UTF-8

例如有这样的讨论:

MicrosoftDocs/PowerShell 文档 https://github.com/MicrosoftDocs/PowerShell-Docs/issues/4021

UTF-8 和无BOM的UTF-8有什么区别? https://stackoverflow.com/questions/2223882/whats-the-difference-between-utf-8-and-utf-8-without-bom

相关内容