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