J'écris une petite application dans VB.net qui me permettra de créer facilement un "compte Windows 7" d'utilisateur avec un mot de passe, au lieu de passer par le panneau de configuration. Le problème que j'ai est que lorsque je crée un fichier bat dans VB.net en utilisant l'encodage UTF-8, il n'écrit pas å ä ö comme il est supposé l'être. J'ai essayé tous les encodages que je peux trouver mais je n'arrive pas à le faire fonctionner.
Si quelqu'un a une idée de la raison pour laquelle je reçois ceci, faites-le moi savoir. Merci d'avance!
Réponses:
Edit: je me trompais;)
cmd.exe
n'accepte UTF-8 , mais vous devez être sûr de l' enregistrer sans leBOM
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
avececho Å Ä Ö
. Enregistrez-le au formatANSI/ASCII
. Ouvrez uncmd.exe
et assurez-vous de voscmd.exe
utilisationsLucida 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
danscmd.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:la source
Lucida Console
et de créer des fichiers sansBOM
(Edit # 2, en bas). Mais la création de cet utilisateur vianet user
fonctionne-t-elle à l'invite de commande? Et qu'est-ce qui ne fonctionne pas si vous le créez via VB.net? Pour cela, nous aurions besoin d'un exemple de code (ou d'une question distincte) car cela devrait fonctionner. (BTW vous avez lié mon image, pas la vôtre, je pense, dans votre commentaire)find
ne gère pas trop bien l'entrée UTF-8. Mais vous pouvez utiliserfindstr
. Comme ça:ping 127.0.0.1 -n 2 | findstr /C:" = "
La chose qui a résolu cela pour moi était d'enregistrer le fichier au format UTF-8 sans nomenclature et en utilisant ce code
La chose que je n'ai pas utilisée auparavant était @echo off, et c'est ce qui a été résolu grâce à chcp 65001! Merci aussi Rik pour toute l'aide :)
la source