Chỉnh sửa: Tôi đã sai;)
cmd.exekhô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ự BOMvà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.exechỉ 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.batvới echo Å Ä Ö. Lưu nó với định dạng ANSI/ASCII. Mở a cmd.exevà đảm bảo việc cmd.exesử 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 1252cá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 Consoletrong cmd.exe:

Có BOM3 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 BOMnhư thế này:
Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)
'^^^^^'
Using sink As New StreamWriter("Foobar.txt", False, utf8WithoutBom)
sink.WriteLine("...")
End Using