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?


@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.


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.