Điều này là do ghi-đầu ra mặc định thành mã hóa văn bản UTF-16, là 2 byte cho mỗi ký tự. Khi bạn xử lý văn bản phù hợp với phạm vi mã ASCII, byte thứ 2 của mỗi ký tự sẽ bằng không.
Điều này được kiểm soát bởi biến số toàn cầu $OutputEncoding
, vì vậy bạn có thể đặt thành ASCII.
Một tùy chọn khác là sử dụng lệnh ghép ngắn cmdlet, có tham số mã hóa rõ ràng. Tôi khuyên bạn nên sử dụng điều này thay vì chuyển hướng đầu ra, vì điều đó giúp bạn không thay đổi môi trường của mình trên toàn cầu (bằng cách đặt biến tùy chọn toàn cầu $OutputEncoding
)
Sử dụng Tệp ngoài và đặt mã là ASCII, ví dụ của bạn sẽ trông giống như này:
"abcd" | out-file "mytext.txt" -Encoding ASCII
Lưu ý rằng không phải tất cả các ký tự đều thể hiện trong ASCII và bạn nên xác định đây có phải là mã hóa thích hợp cho mục đích của mình hay không. Cá nhân tôi thường sẽ đi cho UTF-8, vì nó là tương đương ASCII khi các ký tự nằm trong phạm vi ASCII từ 0-127, nhưng cũng xử lý các ký tự quốc tế. Obligatory link about text encoding.
Cảm ơn bạn đã đặt câu hỏi này !! –