Perché c'è una differenza tra la codifica del prompt dei comandi di Windows rispetto a un file batch?
-
05-07-2019 - |
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!
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
.