Perché c'è una differenza tra la codifica del prompt dei comandi di Windows rispetto a un file batch?

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

Domanda

Ad esempio, supponiamo che io abbia un file batch chiamato 'test.cmd' e che contiene semplicemente:

echo %1

Posso chiamarlo direttamente dal prompt dei comandi con 'test.cmd some¬arg' e il risultato è che la stringa 'some¬arg' viene stampata.

Tuttavia, se inserisco la stessa chiamata in un secondo file batch, chiamato 'tester.cmd' per motivi di argomento, e lo chiamo dal prompt dei comandi, il risultato è che la stringa < code> 'some% arg' è stampato.

Che cos'è che incasina la codifica e come posso aggirarla? Sono sicuro di averlo risolto prima, ma non ricordo come ...

Grazie!

È stato utile?

Soluzione

Questo perché il file batch è codificato in una tabella codici diversa da quella attualmente in cmd.exe.

Nelle configurazioni occidentali predefinite, cmd.exe inizia in CP850 , ma in genere gli editor di testo funzionano in CP1252 (ciò che spesso viene erroneamente indicato come Latin-1 o ISO-8859-1).

I caratteri " & # 172; " e " & # 188; " condividere lo stesso codice di caratteri in queste due pagine di codici, "quot" BC ".

La soluzione è semplice. O codificare il file batch nella tabella codici 850 o passare cmd.exe alla tabella codici 1252 emettendo chcp 1252 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top