in ,

Cách thay đổi mã hóa đầu ra mặc định thành UTF-8 trong PowerShell

Trong PowerShell, đầu ra mặc định khi ghi vào tệp thông qua các lệnh hoặc lệnh chuyển hướng như > hoặc Out-File thường sử dụng mã hóa UTF-16, điều này có thể gây khó khăn nếu bạn muốn sử dụng UTF-8. Dưới đây là cách để thay đổi mã hóa mặc định sang UTF-8.

1. Sử dụng $PSDefaultParameterValues

Để đặt mã hóa mặc định cho các lệnh như Out-File, bạn có thể sử dụng biến $PSDefaultParameterValues. Điều này sẽ giúp bạn không cần chỉ định mã hóa mỗi khi sử dụng Out-File:

$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'

Nếu bạn muốn áp dụng điều này cho tất cả các cmdlet hỗ trợ tham số -Encoding như Set-Content hoặc Add-Content, bạn có thể thiết lập mã hóa mặc định cho tất cả các lệnh:

$PSDefaultParameterValues['*:Encoding'] = 'utf8'

Lưu ý:

  • Trong Windows PowerShell (phiên bản cũ, dành riêng cho Windows), thiết lập này sẽ tạo tệp UTF-8 có BOM.
  • Trong PowerShell 7 (phiên bản đa nền tảng), mã hóa UTF-8 không có BOM là mặc định.

2. Đặt trong profile PowerShell

Bạn có thể thêm các dòng mã trên vào tệp profile PowerShell của mình để thiết lập này có hiệu lực mỗi khi bạn mở PowerShell.

  • Mở tệp profile bằng lệnh:
notepad $PROFILE
  • Thêm dòng lệnh $PSDefaultParameterValues vào tệp, sau đó lưu lại.

3. Thay đổi mã hóa đầu ra tạm thời

Nếu bạn chỉ muốn thay đổi mã hóa cho một lệnh duy nhất, bạn có thể sử dụng Out-File với tùy chọn -Encoding như sau:

"nội dung" | Out-File -FilePath "tệp.txt" -Encoding utf8

4. Sử dụng trong tập lệnh

Nếu bạn đang viết một tập lệnh PowerShell và muốn đảm bảo rằng tất cả các đầu ra được ghi bằng mã hóa UTF-8, bạn có thể thêm tùy chọn -Encoding utf8 cho từng lệnh ghi tệp, hoặc sử dụng $PSDefaultParameterValues như đã nêu ở trên.

Với 4 cách trên thì bạn có thể đảm bảo rằng PowerShell sử dụng mã hóa UTF-8 cho đầu ra của mình. Hy vọng chia sẻ này sẽ giúp ích bạn khi dùng PowerShell.

Written by Linh Nguyễn

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments