in

Sử dụng mã hóa UTF-8 (CHCP 65001) trong Command Prompt / Windows PowerShell

Việc sử dụng mã hóa UTF-8 trong Command PromptWindows PowerShell trên Windows 10 đôi khi gây ra sự bất tiện, đặc biệt là khi bạn cần hỗ trợ các ký tự quốc tế. Dưới đây là cách thực hiện và những lưu ý quan trọng.

Vấn đề thường gặp khi sử dụng CHCP 65001

CHCP 65001 chuyển đổi trang mã (code page) hiện tại sang UTF-8 trong Command Prompt hoặc PowerShell. Điều này có thể hữu ích cho việc xử lý các ký tự quốc tế. Tuy nhiên, sử dụng CHCP 65001 thường dẫn đến một số vấn đề:

  1. Ký tự hiển thị sai hoặc không hiển thị: Một số ứng dụng không hỗ trợ UTF-8 đúng cách có thể hiển thị ký tự không chính xác.
  2. Giới hạn nhập và xuất của ứng dụng cũ: Các ứng dụng cũ có thể không tương thích với mã hóa UTF-8 và gặp lỗi khi đọc hoặc ghi ký tự.

Cách thiết lập UTF-8 hệ thống

Từ Windows 10, phiên bản 1903 trở đi, bạn có thể thiết lập hệ thống để sử dụng UTF-8 làm mã hóa mặc định thông qua cài đặt System Locale. Thực hiện theo các bước sau:

  1. Mở Control Panel > Region.
  2. Trong tab Administrative, nhấn Change system locale.
  3. Chọn Beta: Use Unicode UTF-8 for worldwide language support.
  4. Khởi động lại hệ thống để áp dụng thay đổi.

Cấu hình Windows PowerShell để hỗ trợ UTF-8

Trong Windows PowerShell, ngoài việc thiết lập mã hóa UTF-8 qua CHCP 65001, bạn cần điều chỉnh biến $OutputEncoding để xuất ra UTF-8. Thêm dòng lệnh sau vào $PROFILE của bạn để áp dụng khi khởi động:

$OutputEncoding = [System.Text.UTF8Encoding]::new()

Điều này đảm bảo rằng PowerShell sẽ xuất dữ liệu ra đúng mã hóa UTF-8, bao gồm cả đầu ra từ các lệnh và tương tác với các chương trình bên ngoài.

Sử dụng Windows Terminal để hỗ trợ tốt hơn

Microsoft đã phát triển Windows Terminal, hỗ trợ Unicode và UTF-8 tốt hơn so với Command Prompt truyền thống và PowerShell. Bạn có thể tải xuống Windows Terminal từ Microsoft Store nếu đang sử dụng Windows 10 phiên bản 1903 trở lên. Trong Windows Terminal, bạn có thể tùy chỉnh mã hóa đầu vào và đầu ra cho từng phiên làm việc, đảm bảo hỗ trợ tốt hơn cho các ký tự quốc tế.

Thiết lập mã hóa UTF-8 tự động trong Command Prompt

Nếu bạn muốn tự động thiết lập CHCP 65001 mỗi khi mở Command Prompt, bạn có thể thêm lệnh này vào registry:

  1. Mở Registry Editor và điều hướng đến:
    • HKEY_CURRENT_USER\Software\Microsoft\Command Processor
  2. Thêm khóa AutoRun với giá trị:textSao chép mãchcp 65001 >nul

Điều này sẽ đảm bảo rằng CHCP 65001 được thực hiện mỗi khi bạn mở Command Prompt mà không cần gõ lệnh thủ công.

Written by Linh Nguyễn

Leave a Reply

Exit mobile version