Actualmente estoy ejecutando Windows 7 x64 y generalmente quiero que todas las herramientas de consola funcionen con UTF-8 en lugar de con la página de códigos predeterminada 850.
La ejecución chcp 65001en el símbolo del sistema antes del uso de cualquier herramienta ayuda, pero ¿hay alguna forma de establecerla como página de códigos predeterminada?
Actualizar:
Cambiar el HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCPvalor para 65001hacer que el sistema no pueda iniciarse en mi caso.
El cambio propuesto de HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorunto @chcp 65001>nulsirvió muy bien para mi propósito. (gracias a Ole_Brun )

Aversiones de las funciones de Windows está roto. Todo el código debe ser portado para usar lasWversiones.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCPse usa como respaldo para entornos no unicode (no utf), obviamente intenta forzarlo a un 'unicode', ya que ve que es controvertido por definición. Windows se bloquea probablemente porque algunas cosas del sistema en el arranque dependen del juego de caracteres no Unicode para funcionar.Respuestas:
Para cambiar la página de códigos solo para la consola, haga lo siguiente:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun]chcp 65001fuente
@chcp 65001>nul, mientras que en esta respuesta aceptada, lo eschcp 65001. ¿Cuáles son las diferencias entre los dos?chcp 65001hará que cada símbolo del sistema abierto imprima 'Página de código activo: 65001' mientras@chcp 65001>nulque evitará cualquier salida.Autorunno está presente para mí en Windows 8.1.Autorunno está presente, puede agregar un nuevo valor de cadena con el contenido de@chcp 65001>nulPersonalmente, no me gusta cambiar el registro. Esto puede causar muchos problemas. Creé un archivo por lotes:
Lo
C:\Windows\System32guardé como switch.bat.Creé un enlace para cmd.exe en el escritorio.
En las propiedades del acceso directo de cmd, cambió el destino a:
C:\Windows\System32\cmd.exe /k switchVoilá, cuando necesito escribir UTF-8, uso este enlace.
fuente
Active code page: 65001en stdout. Entonces, si está haciendo algo comoCHCP 65001 && mycommand.exeesto, obtendrá la página de códigos impresa al comienzo. NecesitasCHCP 65001 >nul && mycommand.exeArchivo de registro:
Símbolo del sistema:
Potencia Shell:
-Type DWordse supone con PowerShell 3+ni -> New-Itemsp -> Set-ItemProperty-ea 0 -> -ErrorAction IgnoreCygwin:
/ -> \HKCU -> HKEY_CURRENT_USERuser -> HKEY_CURRENT_USERfuente
chcp 65001en un archivo de comando de ejecución automática. Ver stackoverflow.com/a/17405182/315083El comando para cambiar la página de códigos es
chcp <codepage>. Ejemplo:chcp 1252. Debe escribirlo en una ventana de Powershell. Para evitar la molestia de escribirlo cada vez (si siempre tiene que cambiar la página de códigos), puede agregarlo a la línea de comando del programa. Para hacerlo, sigue estos pasos:-NoExit -Command "chcp 1252"Sea feliz. No te preocupes con el Registro de Windows a menos que no tengas otra opción.
fuente
-NoExit -Command "chcp 1252 > null"también omite el mensaje sobre la página de códigos seleccionada al principio.Esto se puede hacer creando un perfil de PowerShell y agregando el comando "chcp 65001> $ null":
Esto no requiere editar el registro y, a diferencia de editar un acceso directo, funcionará si PowerShell se inicia en una carpeta específica usando el menú contextual del Explorador de Windows.
fuente
En la versión 1809 de Windows 10, he logrado resolver esto permanentemente yendo al sistema
Language settings, seleccionandoAdministrative language settings, haciendo clicChange system locale...y marcando laBeta: Use Unicode UTF-8 for worldwide language supportcasilla y luego reiniciando mi PC.De esta manera, se aplica a todas las aplicaciones, ¡incluso a aquellas que no inicio desde un símbolo del sistema!
(Lo cual era necesario para mí, ya que estaba tratando de editar el código Agda desde Atom).
fuente