PowerShell 中的 UTF-8 编码(CHCP 65001)

Rohan Timalsina 2024年2月15日
  1. PowerShell 中的 Unicode
  2. 在 Windows PowerShell 中更改系统区域设置以使用 UTF-8 编码
  3. $PSDefaultParameterValues 变量中设置编码以在 Windows PowerShell 中使用 UTF-8 编码
PowerShell 中的 UTF-8 编码(CHCP 65001)

本教程将教你在 Windows PowerShell 中使用 UTF-8 编码。

PowerShell 中的 Unicode

Unicode 是一种全球性的字符编码标准。它定义了如何表示文本文件、网页和其他文档中的字符。

计算机系统使用 Unicode 来处理字符和字符串。PowerShell 中的默认编码是 Windows-1252

开发 Unicode 是为了支持世界上所有语言的字符。默认情况下,PowerShell 支持 Unicode 字符编码。

UTF-8UTF-16 是最常见的 Unicode 编码。PowerShell 始终在所有 Unicode 编码中使用 BOM,但 UTF7 除外。

BOM(字节顺序标记)是一个 Unicode 签名,包含在文件或文本流的前几个字节中,表示 Unicode 编码。

在 Windows PowerShell 中更改系统区域设置以使用 UTF-8 编码

在 Windows 中可以选择更改系统区域设置(非 Unicode 程序的当前语言)。但此功能仍处于测试阶段。

控制面板转到区域设置或从运行程序打开 intl.cpl

更改系统区域设置以在 PowerShell 中使用 UTF-8 编码

打开管理选项卡并单击更改系统区域设置。然后检查 Beta 选项,如下图所示。

使用 unicode UTF-8 获得全球语言支持

之后,按 OK 并重新启动计算机以应用设置。

重新启动计算机后,你可以检查 $OutputEncoding 变量以查看当前编码。

$OutputEncoding

输出:

如你所见,当前编码是 Unicode (UTF-8)。

BodyName          : utf-8
EncodingName      : Unicode (UTF-8)
HeaderName        : utf-8
WebName           : utf-8
WindowsCodePage   : 1200
IsBrowserDisplay  : True
IsBrowserSave     : True
IsMailNewsDisplay : True
IsMailNewsSave    : True
IsSingleByte      : False
EncoderFallback   : System.Text.EncoderReplacementFallback
DecoderFallback   : System.Text.DecoderReplacementFallback
IsReadOnly        : True
CodePage          : 65001

现在,你可以在 PowerShell 中查看其他语言的字符。

Get-Content test.txt

输出:

만나서 반가워요

$PSDefaultParameterValues 变量中设置编码以在 Windows PowerShell 中使用 UTF-8 编码

你可以运行以下命令来激活 PowerShell 中的 UTF-8 编码。

$PSDefaultParameterValues = @{'*:Encoding' = 'utf8'}

它仅对当前的 PowerShell 控制台有效。退出 PowerShell 窗口后,它将重置为默认值。

Get-Content test.txt

输出:

만나서 반가워요

PowerShell 中的几个 cmdlet 具有 -Encoding 参数来指定不同字符集的编码。其中一些是 Add-ContentSet-ContentGet-ContentExport-CsvOut-File 等。

-Encoding 参数支持这些值:asciibigendianunicodeoemunicodeutf7utf8utf8BOMutf8NoBOMutf32

我们希望本教程让你了解在 Windows PowerShell 中使用 UTF-8 编码 (CHCP 65001)。

作者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website