Caracteres estranhos (´╗┐) no início de um arquivo em lotes [duplicado]


30

Estou trabalhando com arquivos em lotes no Windows, usando o Notepad e o Notepad ++. Quando executo os arquivos em lote, com os quais todos começam @echo off, vejo a primeira linha (quando executada em duas máquinas separadas) lendo ´╗┐@echo offe, em seguida, todas as linhas REM abaixo também aparecem.

Tentei alterar a codificação no Notepad ++, mas alega que eles já estão na codificação UTF-8, que parece estar correta.

O que preciso fazer para que esses arquivos funcionem corretamente?


@luu minha pergunta é sobre o bloco de notas ++ especificamente
Luke Luke REINSTATE MONICA

Observe que o Bloco de notas comum, ao salvar com UTF8, não permite salvar sem BOM e adicionará esses caracteres.
dmcontador 20/09

Respostas:


26

Parece com a codificação DOS ASCII da Byte Order Mark para UTF-8 (0xEF 0xBB 0xBF): http://en.wikipedia.org/wiki/Byte_order_mark

No Notepad ++, tente codificá-lo como "UTF-8 sem BOM" ou como ASCII simples. Acho que o uso da BOM para UTF-8 é desencorajado por esse motivo, não é exatamente compatível com o ASCII.


2
Absolutamente certo, exceto que 'DOS ASCII' é a página de códigos 850 do DOS, como mostra a experimentação em Python:>>> print u'\ufeff'.encode('utf8').decode('cp850') ´╗┐
deltab

@deltab Ah, boa descoberta. Eu não tinha certeza de como a codificação era chamada especificamente, só que eu não tinha visto os caracteres de arte de linha ╗┐desde os dias do MS-DOS 5 / Windows 3.11. O Windows moderno deve executar arquivos em lote com essa codificação para compatibilidade?
Baochan

1
Eu me deparei com isso ao usar o Visual Studio para criar um novo arquivo de texto.
Sam Goldberg

9

Acontece que ele precisa ser definido como codificação ANSI para funcionar corretamente. Para definir isso, escolhi Codificação -> Codificar em ANSI .

Para descobrir isso, tentei criar um arquivo em lotes na linha de comando.

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

Abri esse arquivo no Notepad ++ e verifiquei a codificação no canto inferior direito, que dizia ANSI como UTF-8 . Não sei por que adiciona esse último bit, mas parece funcionar agora.


ANSI não é realmente uma codificação. Presumivelmente, refere-se à página de código padrão do seu sistema Windows . Isso varia de um sistema para outro, dependendo da configuração.
Cody Grey

Isso não está correto. A BOM é um conjunto de caracteres que codifica artefato.
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen Quem está incorreto, eu ou Cody?
Canadian Luke REINSTATE MONICA
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.