Caractères étranges (´╗┐) au début d'un fichier de commandes [doublon]

30

Je travaille avec des fichiers batch dans Windows, en utilisant à la fois le Bloc-notes et le Bloc-notes ++. Lorsque j'exécute les fichiers batch, qui commencent tous par @echo off, je vois la première ligne (lors de l'exécution sur deux machines distinctes) lire ´╗┐@echo off, puis toutes les lignes REM en dessous apparaissent également.

J'ai essayé de changer l'encodage dans Notepad ++, mais il prétend qu'ils sont déjà à l'encodage UTF-8, ce qui semble être correct.

Que dois-je faire pour que ces fichiers fonctionnent correctement?

Canadian Luke REINSTATE MONICA
la source
@luu ma question concerne le bloc-notes ++ en particulier
Canadian Luke REINSTATE MONICA
Notez que le Bloc-notes normal, lors de l'enregistrement avec UTF8, ne permet pas d'enregistrer sans nomenclature et ajoutera ces caractères.
dmcontador

Réponses:

26

Il ressemble au codage ASCII DOS de la marque d'ordre des octets pour UTF-8 (0xEF 0xBB 0xBF): http://en.wikipedia.org/wiki/Byte_order_mark

Dans Notepad ++, essayez de l'encoder en "UTF-8 sans BOM" ou en ASCII ordinaire. Je pense que l'utilisation de la nomenclature pour UTF-8 est déconseillée pour cette raison, elle n'est pas exactement rétrocompatible avec ASCII.

baochan
la source
2
Tout à fait raison, sauf que le «DOS ASCII» est la page de code DOS 850, comme le montre Experimention en Python:>>> print u'\ufeff'.encode('utf8').decode('cp850') ´╗┐
deltab
@deltab Ah, bonne trouvaille. Je ne savais pas exactement comment l'encodage s'appelait, juste que je n'avais pas vu les caractères au trait ╗┐depuis l'époque de MS-DOS 5 / Windows 3.11. Windows moderne doit exécuter des fichiers batch avec cet encodage pour des raisons de compatibilité?
baochan
1
J'ai rencontré cela lors de l'utilisation de Visual Studio pour créer un nouveau fichier texte.
Sam Goldberg
9

Il s'avère qu'il doit être défini sur le codage ANSI pour fonctionner correctement. Pour définir cela, j'ai choisi Encoding -> Encode in ANSI .

Pour comprendre cela, j'ai essayé de créer un fichier de commandes à partir de la ligne de commande.

echo @echo off > batch.bat
echo REM Some comment... >> batch.bat
echo echo Hello world! >> batch.bat

J'ai ensuite ouvert ce fichier dans Notepad ++ et vérifié l'encodage dans le coin inférieur droit, qui lisait ANSI en UTF-8 . Je ne sais pas pourquoi cela ajoute ce dernier morceau, mais cela semble fonctionner maintenant.

Canadian Luke REINSTATE MONICA
la source
ANSI n'est pas vraiment un encodage. Vraisemblablement, il fait référence à la page de codes par défaut de votre système Windows . Cela variera d'un système à l'autre, selon la configuration.
Cody Gray
Ce n'est pas correct. La nomenclature est un artefact de codage de jeu de caractères.
Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen Qui est incorrect, moi ou Cody?
Canadian Luke REINSTATE MONICA