Edit: mi sbagliavo;)
cmd.exe
non accetta UTF-8, ma è necessario essere sicuri di salvarlo , senza l' BOM
all'inizio del file.
Ecco un secondo test. È possibile utilizzare chcp 65001
all'inizio del file batch.
Un file batch non può essere di tipo UTF-8. Deve essere ASCII. Cmd.exe
semplicemente non accetta un altro formato. Ho fatto un piccolo test e puoi usare i tuoi personaggi ma ha bisogno di un po 'di lavoro.
Crea un file test.bat
con echo Å Ä Ö
. Salvalo con il formato ANSI/ASCII
. Apri a cmd.exe
e assicurati dei tuoi cmd.exe
usi Lucida Console
(per visualizzare i caratteri Unicode).
Quando si digita il file mostrerà i caratteri come i vecchi caratteri DOS. Puoi vedere una tabella di traduzione qui .
Quando si passa a una "Ansi di Windows", la tabella codici (ovvero il latino dell'Europa occidentale) con chcp 1252
i caratteri viene visualizzata correttamente. Se vengono anche trasferiti alle rispettive utility dipende da tale utility.
Ma perché stai creando un file batch per questo? Non puoi semplicemente codificarlo in VB.net?
Modifica 2 #:
Questo è il modo di impostare Lucida Console
in cmd.exe
:
L' BOM
sono 3 caratteri all'inizio di un file UTF-8. ( \xEF\xBB\xBF
).
In VB.net dovresti creare un file senza un BOM
simile:
Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)
'^^^^^'
Using sink As New StreamWriter("Foobar.txt", False, utf8WithoutBom)
sink.WriteLine("...")
End Using