Powershell 和 UTF-8

标签 powershell utf-8 utf

我有一个用 atom 创建的 html 文件 test.html,其中包含:

Testé encoding utf-8

当我使用 Powershell 控制台阅读时(我使用的是法语 Windows)

Get-Content -Raw test.html

我回来了:

Testé encoding utf-8

为什么重音字符不能正确打印?

最佳答案

  • Atom editor创建 UTF-8 文件没有 pseudo-BOM 默认情况下(从跨平台的角度来看,这是正确的做法)。

  • Windows PowerShell[1] 仅识别 带有伪 BOM 的 UTF-8 文件。

    • 在没有伪 BOM 的情况下,PowerShell 将文件解释为根据系统的旧 ANSI 代码页进行格式化,例如 Windows-1252例如,在美国系统上。
      (这也是记事本使用的默认编码,它称为“ANSI”,不仅在读取文件时,而且在创建文件时也是如此。Windows PowerShell 的 Get-Content/Set-Content (这里的编码称为 Default 并且是实际的默认值,因此不需要指定);相比之下, Out-File/> 创建 默认情况下 UTF-16LE 编码的文件(Unicode)。)

因此,为了让 Get-Content 在 Windows PowerShell 中正确识别 BOM-less UTF-8 文件,您必须 < strong>使用 -Encoding utf8.


[1] 相比之下,跨平台的 PowerShell Core值得称赞的版本默认为 UTF-8,在 cmdlet 中始终如一地读取和写入,因此即使没有 BOM,它也能正确解释 UTF-8 编码的文件,并且默认情况下也会创建没有 BOM 的文件。

关于Powershell 和 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42542560/

相关文章:

python - Python 中的 Unicode 问题

python - 获取文件的最后n行——解码错误

pdf - PDF 文件是否有一个字段指定其编码?

php - PHP str_word_count() 多字节安全吗?

powershell - Azure Powershell 工作流 - 未找到输入参数

powershell - 如何从文本文件中提取特定行

function - 函数的强制参数和默认参数

windows - 如何让任务调度程序终止从 powershell 脚本启动的子进程

perl - Perl 的 IO::File 等价于 open($fh, ">:utf8",$path) 是什么?

javascript - 使用 TideSDK 保存 pdf 文件