it-swarm-es.com

Cambiar la página de códigos predeterminados de la consola de Windows a UTF-8

Actualmente estoy ejecutando Windows 7 x64 y normalmente quiero que todas las herramientas de la consola funcionen con UTF-8 en lugar de con la página de códigos predeterminada 850.

La ejecución de chcp 65001 en el comando Preguntar antes de usar cualquier herramienta ayuda, pero ¿hay alguna forma de establecerlo como la página de códigos predeterminada?

Actualización:

Cambiar el valor de HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP a 65001 parece hacer que el sistema no pueda iniciarse en mi caso.

El cambio propuesto de HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun a @chcp 65001>nul sirvió bien para mi propósito. (gracias a Ole_Brun )

114
Regent

Para cambiar la página de códigos solo para la consola, haga lo siguiente:

  1. Inicio -> Ejecutar -> regedit
  2. Ir a [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun]
  3. Cambie el valor a chcp 65001
92
Nils Magne Lunde

Personalmente, no me gusta cambiar el registro. Esto puede causar muchos problemas. He creado un archivo por lotes:

@ECHO OFF
REM change CHCP to UTF-8
CHCP 65001
CLS

Guardé en C:\Windows\System32 como switch.bat.

He creado un enlace para cmd.exe en el escritorio.

En las propiedades del acceso directo de cmd, se cambió el destino a: C:\Windows\System32\cmd.exe /k switch

Voilá, cuando necesito escribir UTF-8, uso este enlace.

36
juca

Archivo de registro:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:fde9
  1. El valor debe estar en hexadecimal
  2. La línea superior debe incluirse exactamente como está
  3. HKEY_CURRENT_USER no puede abreviarse
  4. dword no puede ser omitido

Símbolo del sistema:

REG ADD HKCU\Console\%SystemRoot^%_system32_cmd.exe /v CodePage /t REG_DWORD /d 65001
  1. El valor puede estar en dec o hex
  2. % SystemRoot% debe ser escapado
  3. REG_DWORD no puede ser omitido

Potencia Shell:

New-Item -ErrorAction Ignore HKCU:\Console\%SystemRoot%_system32_cmd.exe
Set-ItemProperty HKCU:\Console\%SystemRoot%_system32_cmd.exe CodePage 65001
  1. El valor puede estar en dec o hex
  2. -Type DWord se asume con PowerShell 3+
  3. Puede usar ni -> New-Item
  4. Puede usar sp -> Set-ItemProperty
  5. Puede usar -ea 0 -> -ErrorAction Ignore

Cygwin:

regtool add '\HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe'
regtool set '\HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe\CodePage' 65001
  1. El valor puede estar en dec o hex
  2. Puede usar / -> \
  3. Puede usar HKCU -> HKEY_CURRENT_USER
  4. Puede usar user -> HKEY_CURRENT_USER
30
Steven Penny

Esto se puede hacer creando un perfil de PowerShell y agregando el comando "chcp 65001> $ null":

PS> Set-ExecutionPolicy RemoteSigned
PS> New-Item -Path $Profile -ItemType file -Force
PS> notepad $Profile

Esto no requiere editar el registro y, a diferencia de la edición de un acceso directo, funcionará si PowerShell se inicia en una carpeta específica utilizando el menú contextual del Explorador de Windows.

5
Freon Sandoz

El comando para cambiar la página de códigos es chcp <codepage>. Ejemplo: chcp 1252. Debes 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 comandos del programa. Para hacerlo, sigue estos pasos:

  1. Haga clic con el botón derecho en el icono de Powershell en el menú Inicio y seleccione "Más"> "Abrir ubicación de archivo".
  2. Haga clic derecho en el acceso directo de Powershell y seleccione "Propiedades".
  3. Agregue lo siguiente al final de la línea de comando "Destino": -NoExit -Command "chcp 1252"

Sea feliz. No se preocupe por el Registro de Windows a menos que no tenga otra opción.

5
JColares

En la compilación 1809 de Windows 10, logré resolver esto de manera permanente yendo al Language settings del sistema, seleccionando Administrative language settings, haciendo clic en Change system locale..., marcando la casilla Beta: Use Unicode UTF-8 for worldwide language support y luego reiniciando mi PC.

De esta manera, se aplica a todas las aplicaciones, incluso a aquellas que no inicio desde un indicador de comando.

1
Isti115