Caratteri strani (´╗┐) all'inizio di un file batch [duplicato]


30

Sto lavorando con file batch in Windows, usando sia Blocco note che Notepad ++. Quando eseguo i file batch, che iniziano tutti @echo off, vedo la prima riga (quando si esegue su due macchine separate) che legge ´╗┐@echo off, e quindi vengono visualizzate anche tutte le righe REM sottostanti.

Ho provato a cambiare la codifica in Notepad ++, ma afferma che sono già in codifica UTF-8, che sembra essere corretto.

Cosa devo fare per far funzionare correttamente questi file?


@luu la mia domanda riguarda specificamente il blocco note ++
Canadian Luke REINSTATE MONICA

Si noti che il normale Blocco note, quando si salva con UTF8, non consente di salvare senza BOM e aggiungerà quei caratteri.
dmcontador,

Risposte:


26

Sembra la codifica ASCII DOS del Byte Order Mark per UTF-8 (0xEF 0xBB 0xBF): http://en.wikipedia.org/wiki/Byte_order_mark

In Notepad ++ prova a codificarlo come "UTF-8 senza BOM" o come semplice ASCII. Penso che l'uso di BOM per UTF-8 sia scoraggiato per questo motivo, non è esattamente retrocompatibile con ASCII.


2
Assolutamente giusto, tranne "DOS ASCII" è la pagina di codice DOS 850, come mostrato dalla sperimentazione in Python:>>> print u'\ufeff'.encode('utf8').decode('cp850') ´╗┐
deltab

@deltab Ah, buona scoperta. Non ero sicuro di come si chiamasse specificamente la codifica, solo che non vedevo i caratteri di line art ╗┐dai tempi di MS-DOS 5 / Windows 3.11. Windows moderno deve eseguire file batch con tale codifica per la compatibilità?
Baochan,

1
Mi sono imbattuto in questo durante l'utilizzo di Visual Studio per creare un nuovo file di testo.
Sam Goldberg

9

Si scopre che deve essere impostato sulla codifica ANSI per funzionare correttamente. Per impostare questo, ho scelto Codifica -> Codifica in ANSI .

Per capirlo, ho provato a creare un file batch dalla riga di comando.

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

Ho quindi aperto questo file in Notepad ++ e ho verificato la codifica nell'angolo in basso a destra, che leggeva ANSI come UTF-8 . Non so perché aggiunge l'ultimo bit, ma sembra funzionare ora.


ANSI non è in realtà una codifica. Presumibilmente si riferisce alla tabella codici predefinita del sistema Windows . Ciò varierà da un sistema all'altro, a seconda della configurazione.
Cody Grey,

Questo non è corretto La DBA è un set di caratteri che codifica artefatto.
Thorbjørn Ravn Andersen,

@ ThorbjørnRavnAndersen Chi è sbagliato, io o Cody?
Canadian Luke REINSTATE MONICA,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.