Estoy escribiendo una pequeña aplicación en VB.net que me permitirá crear fácilmente una "cuenta de Windows 7" de usuario con una contraseña, en lugar de pasar por el panel de control. El problema que tengo es que cuando creo un archivo bat en VB.net usando la codificación UTF-8, no escribe å ä ö como se supone que debe ser. He intentado todas las codificaciones que puedo encontrar pero no puedo hacer que funcione.
Si alguien tiene una idea de por qué recibo esto, hágamelo saber. Gracias de antemano!
Respuestas:
Editar: yo estaba equivocado;)
cmd.exe
¿Acepta UTF-8 pero hay que estar seguro para guardarlo sin elBOM
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
conecho Å Ä Ö
. Guárdelo con formatoANSI/ASCII
. Abracmd.exe
ay asegúrese de suscmd.exe
usosLucida 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
encmd.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:fuente
Lucida Console
y crear archivos sinBOM
(Editar # 2, en la parte inferior). ¿Pero crear este usuario a través delnet user
trabajo en el símbolo del sistema? ¿Y qué no funciona si lo creas a través de VB.net? Para esto necesitaríamos un código de ejemplo (o una pregunta separada) porque esto debería funcionar. (Por cierto, vinculaste mi imagen, no la tuya, creo, en tu comentario)find
no maneja la entrada UTF-8 no muy bien. Pero puedes usarfindstr
. De esta manera:ping 127.0.0.1 -n 2 | findstr /C:" = "
Lo que solucionó esto para mí fue guardar el archivo como UTF-8 sin BOM y usar este código
¡Lo que no usé antes fue @echo off para que usar chcp 65001 sea lo que lo solucionó! Gracias también Rik por toda la ayuda :)
fuente