Edit: myliłem się;)
cmd.exe
bierze UTF-8, ale trzeba mieć pewność, aby zapisać go bezBOM
na początku pliku.
Oto drugi test. Możesz użyć chcp 65001
na początku pliku wsadowego.
Plik wsadowy nie może być typu UTF-8. To musi być ASCII. Cmd.exe
po prostu nie akceptuje innego formatu. Zrobiłem mały test i możesz użyć swoich postaci, ale to wymaga trochę pracy.
Utwórz plik za test.bat
pomocą echo Å Ä Ö
. Zapisz w formacie ANSI/ASCII
. Otwieranie cmd.exe
i upewnić się, że cmd.exe
zastosowanie Lucida Console
(do wyświetlania znaków Unicode).
Po wpisaniu pliku będą wyświetlane znaki jako stare znaki DOS. Można zobaczyć wykres tłumaczenie tutaj .
Po przejściu na „Windows Ansi” - strona kodowa (tzn. Łacińska Europa Zachodnia) ze chcp 1252
znakami są wyświetlane poprawnie. To, czy zostaną przeniesione do odpowiednich narzędzi, zależy od tego narzędzia.
Ale dlaczego tworzysz do tego plik wsadowy? Nie możesz tego po prostu zakodować w VB.net?
Edytuj 2 #:
W ten sposób można ustawić Lucida Console
w cmd.exe
:
Są BOM
to 3 znaki na początku pliku UTF-8. ( \xEF\xBB\xBF
).
W VB.NET byłoby utworzyć plik bezBOM
tak:
Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)
'^^^^^'
Using sink As New StreamWriter("Foobar.txt", False, utf8WithoutBom)
sink.WriteLine("...")
End Using