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 65001
en 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\OEMCP
valor para 65001
hacer que el sistema no pueda iniciarse en mi caso.
El cambio propuesto de HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun
to @chcp 65001>nul
sirvió muy bien para mi propósito. (gracias a Ole_Brun )
A
versiones de las funciones de Windows está roto. Todo el código debe ser portado para usar lasW
versiones.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP
se 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 65001
fuente
@chcp 65001>nul
, mientras que en esta respuesta aceptada, lo eschcp 65001
. ¿Cuáles son las diferencias entre los dos?chcp 65001
hará que cada símbolo del sistema abierto imprima 'Página de código activo: 65001' mientras@chcp 65001>nul
que evitará cualquier salida.Autorun
no está presente para mí en Windows 8.1.Autorun
no está presente, puede agregar un nuevo valor de cadena con el contenido de@chcp 65001>nul
Personalmente, no me gusta cambiar el registro. Esto puede causar muchos problemas. Creé un archivo por lotes:
Lo
C:\Windows\System32
guardé 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 switch
Voilá, cuando necesito escribir UTF-8, uso este enlace.
fuente
Active code page: 65001
en stdout. Entonces, si está haciendo algo comoCHCP 65001 && mycommand.exe
esto, obtendrá la página de códigos impresa al comienzo. NecesitasCHCP 65001 >nul && mycommand.exe
Archivo de registro:
Símbolo del sistema:
Potencia Shell:
-Type DWord
se supone con PowerShell 3+ni -> New-Item
sp -> Set-ItemProperty
-ea 0 -> -ErrorAction Ignore
Cygwin:
/ -> \
HKCU -> HKEY_CURRENT_USER
user -> HKEY_CURRENT_USER
fuente
chcp 65001
en 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 support
casilla 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