¿Por qué hay una diferencia entre la codificación de la solicitud de comando de Windows frente a un archivo por lotes?

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

Pregunta

Por ejemplo, supongamos que tengo un archivo por lotes llamado 'test.cmd' y simplemente contiene:

echo %1

Puedo llamar esto directamente desde el símbolo del sistema con 'test.cmd some¬arg' y el resultado es que se imprime la cadena 'some¬arg' .

Sin embargo, si hago esa misma llamada en un segundo archivo por lotes, llamado 'tester.cmd' por el bien del argumento, y lo llamo desde la línea de comandos, el resultado es que la cadena < Se imprime el código> 'algo% arg' .

¿Qué es lo que desordena la codificación y cómo puedo evitarlo? Estoy seguro de que he solucionado esto antes, pero no recuerdo cómo ...

¡Gracias!

¿Fue útil?

Solución

Esto se debe a que su archivo por lotes está codificado en una página de códigos diferente a la que se encuentra actualmente en cmd.exe.

En las configuraciones predeterminadas occidentales, cmd.exe se inicia en CP850 , pero los editores de texto generalmente trabajan en CP1252 (lo que a menudo se denomina erróneamente Latin-1 o ISO-8859-1).

Los caracteres " ¬ " y " ¼ " comparte el mismo código de carácter en estas dos páginas de código, " BC " ;.

La solución es simple. Codifique su archivo por lotes en la página de códigos 850, o cambie cmd.exe a la página de códigos 1252 emitiendo chcp 1252 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top