Chỉnh sửa: Tôi đã sai;)
cmd.exe
không chấp nhận UTF-8 nhưng bạn cần phải chắc chắn để lưu nó mà không cần sự BOM
vào đầu của tập tin.
Đây là một thử nghiệm thứ hai. Bạn có thể sử dụng chcp 65001
ở đầu tập tin bó của bạn.
Một tệp bó không thể là loại UTF-8. Nó cần phải là ASCII. Cmd.exe
chỉ không chấp nhận định dạng khác. Tôi đã làm một bài kiểm tra nhỏ và bạn có thể sử dụng các nhân vật của mình nhưng nó cần một số công việc.
Tạo một tập tin test.bat
với echo Å Ä Ö
. Lưu nó với định dạng ANSI/ASCII
. Mở a cmd.exe
và đảm bảo việc cmd.exe
sử dụng của bạn Lucida Console
(để hiển thị các ký tự Unicode).
Khi bạn nhập tệp, nó sẽ hiển thị các ký tự dưới dạng các ký tự DOS cũ. Bạn có thể xem một biểu đồ dịch thuật ở đây .
Khi bạn chuyển sang trang "Windows Ansi" - trang mã (tức là tiếng Tây Âu Latinh) với chcp 1252
các ký tự được hiển thị chính xác. Nếu họ cũng được chuyển đến các tiện ích tương ứng của họ phụ thuộc vào tiện ích đó.
Nhưng tại sao bạn lại tạo một tệp bó cho việc này? Bạn có thể chỉ viết mã trong VB.net không?
Chỉnh sửa 2 #:
Đây là cách bạn thiết lập Lucida Console
trong cmd.exe
:
Có BOM
3 ký tự ở đầu tệp UTF-8. ( \xEF\xBB\xBF
).
Trong VB.net bạn sẽ tạo ra một tập tin mà không cần một BOM
như thế này:
Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)
'^^^^^'
Using sink As New StreamWriter("Foobar.txt", False, utf8WithoutBom)
sink.WriteLine("...")
End Using