Caracteres extraños (´╗┐) al comienzo de un archivo por lotes [duplicado]

30

Estoy trabajando con archivos por lotes en Windows, usando Notepad y Notepad ++. Cuando ejecuto los archivos por lotes, que comienzan con todos @echo off, veo la lectura de la primera línea (cuando se ejecuta en dos máquinas separadas) ´╗┐@echo off, y luego también aparecen todas las líneas REM debajo.

He intentado cambiar la codificación en Notepad ++, pero afirma que ya están en la codificación UTF-8, que parece ser correcta.

¿Qué debo hacer para que estos archivos se ejecuten correctamente?

El canadiense Luke REINSTATE MONICA
fuente
@luu mi pregunta es sobre notepad ++ específicamente
Canadian Luke REINSTATE MONICA
Tenga en cuenta que el Bloc de notas normal, al guardar con UTF8, no permite guardar sin BOM y agregará esos caracteres.
dmcontador

Respuestas:

26

Parece la codificación ASCII de DOS de la marca de orden de bytes para UTF-8 (0xEF 0xBB 0xBF): http://en.wikipedia.org/wiki/Byte_order_mark

En Notepad ++ intente codificarlo como "UTF-8 sin BOM" o como ASCII simple. Creo que se desaconseja el uso de BOM para UTF-8 por esta razón, no es exactamente compatible con ASCII.

baochan
fuente
2
Absolutamente correcto, excepto que el 'DOS ASCII' es la página de códigos DOS 850, como se muestra por experimentación en Python:>>> print u'\ufeff'.encode('utf8').decode('cp850') ´╗┐
deltab
@deltab Ah, buen hallazgo. No estaba seguro de cómo se llamaba específicamente la codificación, solo que no había visto los caracteres del arte lineal ╗┐desde los días de MS-DOS 5 / Windows 3.11. ¿Windows moderno debe ejecutar archivos por lotes con esa codificación para compatibilidad?
baochan
1
Me encontré con esto cuando uso Visual Studio para crear un nuevo archivo de texto.
Sam Goldberg
9

Resulta que debe establecerse en codificación ANSI para que funcione correctamente. Para configurar esto, elegí Codificación -> Codificar en ANSI .

Para resolver esto, intenté crear un archivo por lotes desde la línea de comandos.

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

Luego abrí este archivo en Notepad ++, y verifiqué la codificación en la esquina inferior derecha, que decía ANSI como UTF-8 . No sé por qué agrega ese último bit, pero parece funcionar ahora.

El canadiense Luke REINSTATE MONICA
fuente
ANSI no es realmente una codificación. Presumiblemente se refiere a la página de códigos predeterminada de su sistema Windows . Eso variará de un sistema a otro, dependiendo de la configuración.
Cody Gray
Esto no es correcto. La lista de materiales es un artefacto de codificación de juego de caracteres.
Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen ¿Quién es incorrecto, yo o Cody?
Canadian Luke REINSTATE MONICA