Lors de l'exécution de certains fichiers (principalement par lots) à l'aide de PsExec, j'obtiens ces symboles étranges avant ma commande. Ma pensée initiale était que j'utilisais un mauvais encodage, mais après vérification, j'ai réalisé que tous mes fichiers utilisaient UTF-8.
25
Réponses:
Cela a deux causes:
cmd.exe ne prend pas en charge UTF-8. Il utilise toujours l'un des codages à un octet souvent appelé «OEM» - cp437, cp775, etc., selon les paramètres régionaux du système.
(Je m'attendais à ce qu'il prenne également en charge l'UTF-16, mais apparemment pas; pas même si j'ai ajouté la nomenclature UTF-16.)
Votre éditeur de texte ajoute une "marque d'ordre d'octets" UTF-8 (octets
EF
BB
BF
) au début de tous les fichiers UTF-8.Lorsque cmd.exe lit votre script, il ne sait pas quoi faire de la marque - il voit la nomenclature comme trois caractères cp437 ordinaires
’
╗
┐
et tente de les utiliser dans le nom de la commande.Configurez votre éditeur pour arrêter l'ajout de la nomenclature aux fichiers encodés en UTF-8. (Cela n'a de sens qu'en UTF-16 et est très inutile en UTF-8.)
euh
quoi
la source
Pour approfondir la réponse de @ dsolimano , si vous utilisez spécifiquement Visual Studio , et dans mon cas c'est 2013 , je l'ai corrigé en procédant comme suit:
Maintenant, lorsque vous ouvrez un fichier .bat à partir de Visual Studio , vous serez initialement invité avec:
Vous souhaiterez explorer les options jusqu'à ce que vous arriviez à l' option DOS de votre langue:
Cliquez sur OK pour terminer l'ouverture du fichier.
Ok, même si cela devrait être assez évident à ce stade, si vous pouvez voir les

caractères au début de votre fichier, il vous incomberait de les supprimer et d'enregistrer le fichier, maintenant avec l'encodage correct. C'est ce qui vous empêche d'être invité à nouveau la prochaine fois.Avec tout cela en place, vous serez heureux de savoir que vous pouvez maintenant afficher , modifier et enregistrer vos fichiers .bat à partir de Visual Studio afin que cmd.exe ne vous donne plus l'erreur odieuse susmentionnée de:
la source
Ce sont des marques d'ordre d'octets Unicode . Cmd.exe ne les comprend pas. Si vous réenregistrez vos fichiers dans le Bloc-notes avec un codage ANSI, cela devrait résoudre le problème.
Par exemple, j'ai créé ce fichier batch:
Je l'enregistre d'abord avec l'encodage UTF-8
Puis avec Unicode
Et enfin avec ANSI
la source
Comme expliqué précédemment, ce caractère est le caractère unicode BOM (Byte Order Mark) utilisé comme signature et que cmd.exe ne reconnaît pas.
Vous pouvez le supprimer en toute sécurité de plusieurs manières.
J'ai trouvé très facile à faire comme suit:
la source