Editar: yo estaba equivocado;)
cmd.exe
¿Acepta UTF-8 pero hay que estar seguro para guardarlo sin el BOM
al principio del archivo.
Aquí hay una segunda prueba. Puede usarlo chcp 65001
al comienzo de su archivo por lotes.
Un archivo por lotes no puede ser del tipo UTF-8. Tiene que ser ASCII. Cmd.exe
simplemente no acepta otro formato. Hice una pequeña prueba y puedes usar tus personajes, pero necesita algo de trabajo.
Haz un archivo test.bat
con echo Å Ä Ö
. Guárdelo con formato ANSI/ASCII
. Abra cmd.exe
ay asegúrese de sus cmd.exe
usos Lucida Console
(para mostrar los caracteres Unicode).
Cuando escriba el archivo, mostrará los caracteres como los viejos caracteres de DOS. Puedes ver un cuadro de traducción aquí .
Cuando cambia a una página de códigos "Windows Ansi" (es decir, el latín de Europa occidental) con chcp 1252
los caracteres se muestran correctamente. Si también se transfieren a sus respectivas utilidades depende de esa utilidad.
Pero, ¿por qué estás creando un archivo por lotes para esto? ¿No puedes simplemente codificarlo en VB.net?
Editar 2 #:
Así es como se establece Lucida Console
en cmd.exe
:
El BOM
son 3 caracteres al comienzo de un archivo UTF-8. ( \xEF\xBB\xBF
)
En VB.net debe crear un archivo sin una BOM
como esta:
Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)
'^^^^^'
Using sink As New StreamWriter("Foobar.txt", False, utf8WithoutBom)
sink.WriteLine("...")
End Using