Por que existe uma diferença entre a codificação do prompt de comando do Windows versus um arquivo em lote?

StackOverflow https://stackoverflow.com/questions/252970

Pergunta

Por exemplo, suponha que eu tenha um arquivo em lote chamado 'test.cmd' E simplesmente contém:

echo %1

Eu posso chamar isso diretamente do prompt de comando com 'test.cmd some¬arg' E o resultado é que a string 'some¬arg' está impresso.

No entanto, se eu fizer a mesma chamada em um segundo arquivo em lote, chamado 'tester.cmd' Por uma questão de argumento, e eu chamo isso do comando solicitar o resultado é que a string 'some%arg' está impresso.

O que estraga a codificação e como faço para contornar isso? Tenho certeza de que já consertei isso antes, mas não me lembro como ...

Obrigado!

Foi útil?

Solução

Isso ocorre porque seu arquivo em lote é codificado em uma página de código diferente do CMD.exe está atualmente.

Nas configurações padrão ocidentais, o cmd.exe começa em CP850, mas os editores de texto geralmente trabalham em CP1252 (o que geralmente é errado denominado latim-1 ou ISO-8859-1).

Os caracteres "¬" e "¼" compartilham o mesmo código de caracteres nessas duas páginas de código, "BC".

A solução é simples. Codificar seu arquivo em lote na página 850 ou alternar o cmd.exe para o código da página 1252, emitindo chcp 1252.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top