Edit: je me trompais;)
cmd.exe
n'accepte UTF-8 , mais vous devez être sûr de l' enregistrer sans le BOM
début du fichier.
Voici un deuxième test. Vous pouvez utiliser chcp 65001
au début de votre fichier batch.
Un fichier batch ne peut pas être de type UTF-8. Il doit être ASCII. Cmd.exe
n'accepte tout simplement pas un autre format. J'ai fait un petit test et vous pouvez utiliser vos personnages mais cela demande du travail.
Créez un fichier test.bat
avec echo Å Ä Ö
. Enregistrez-le au format ANSI/ASCII
. Ouvrez un cmd.exe
et assurez-vous de vos cmd.exe
utilisations Lucida Console
(pour afficher les caractères Unicode).
Lorsque vous tapez le fichier, il affiche les caractères comme les anciens caractères DOS. Vous pouvez voir un tableau de traduction ici .
Lorsque vous passez à une page de codes "Windows Ansi" (c'est-à-dire latin d'Europe occidentale), chcp 1252
les caractères s'affichent correctement. S'ils sont également transférés vers leurs utilitaires respectifs, cela dépend de cet utilitaire.
Mais pourquoi créez-vous un fichier batch pour cela? Ne pouvez-vous pas simplement le coder dans VB.net?
Modifier 2 #:
Voici comment vous définissez Lucida Console
dans cmd.exe
:
Il BOM
y a 3 caractères au début d'un fichier UTF-8. ( \xEF\xBB\xBF
).
Dans VB.net vous créez un fichier sans un BOM
comme celui - ci:
Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)
'^^^^^'
Using sink As New StreamWriter("Foobar.txt", False, utf8WithoutBom)
sink.WriteLine("...")
End Using