我编写了几个 powershell 自动化脚本,有时需要编辑 linux OS 系列使用的文件。
我知道 Windows 使用标志来结束文件中的字符串CR
LF
,而 Linux 仅使用标志LF
。两者还使用不同版本的utf8
编码。虽然 Windows 能够读取 Linux 编写的文件,但相反的情况却不一样,这实际上会在 Linux 中读取 Windows 编写的文件时造成问题。
然而,似乎还有更多问题:我发现 Windows 使用,并且与 Linux 相比,它utf8BOM
实际上并不完全支持简单编码。utf8
我的问题是:使用set-content
cmdlet时,powershell默认使用的编码是。在写入文件时使用参数时,和utf8NoBOM
之间有什么实际区别?utf8
utf8BOM
utf8NoBOM
-Encoding
-编码
指定目标文件的编码类型。默认值为
utf8NoBOM
。
- utf8:以 UTF-8 格式编码。
- utf8BOM:使用字节顺序标记 (BOM) 以 UTF-8 格式编码
- utf8NoBOM:以无字节顺序标记 (BOM) 的 UTF-8 格式编码
答案1
这不是 Powershell 特有的东西。这是行业格式规范。因此,只需在网上单独搜索每种编码即可获得详细信息。
例如有这样的讨论:
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