Edit: я був неправий;)
cmd.exe
дійсно приймає UTF-8 , але ви повинні бути впевнені , щоб зберегти його безBOM
на початку файлу.
Ось друге випробування. Ви можете використовувати chcp 65001
на початку свого пакетного файлу.
Пакетний файл не може бути типу UTF-8. Це має бути ASCII. Cmd.exe
просто не приймає іншого формату. Я зробив невеликий тест, і ви можете використовувати своїх персонажів, але це потребує певної роботи.
Створіть файл test.bat
із echo Å Ä Ö
. Збережіть його у форматі ANSI/ASCII
. Відкрийте a cmd.exe
і переконайтеся у cmd.exe
використанні Lucida Console
(для відображення символів Unicode).
При введенні файлу він відображатиме символи як старі DOS-символи. Діаграму перекладу можна переглянути тут .
При переході на "Windows Ansi" - кодова сторінка (тобто західноєвропейська латинська) з chcp 1252
символами відображається правильно. Якщо вони також будуть передані у відповідні утиліти, залежить від цієї утиліти.
Але для чого ви створюєте для цього пакетний файл? Ви не можете просто зашифрувати це на VB.net?
Редагувати 2 #:
Це, як ви встановите Lucida Console
в cmd.exe
:
BOM
3 символів на початку файлу UTF-8. ( \xEF\xBB\xBF
).
У VB.net ви можете створити файл безBOM
, як це:
Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)
'^^^^^'
Using sink As New StreamWriter("Foobar.txt", False, utf8WithoutBom)
sink.WriteLine("...")
End Using