2011-04-12 10:42:07 +0000 2011-04-12 10:42:07 +0000
131
131

Alterar a página de código padrão do console do Windows para UTF-8

Atualmente estou executando o Windows 7 x64 e normalmente quero que todas as ferramentas do console funcionem com UTF-8 ao invés do código padrão página 850.

Executando chcp 65001 no prompt de comando antes de usar qualquer ferramenta ajuda mas há alguma maneira de definir é como página de código padrão?

Update:

Alterar o valor de HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP para 65001 parece fazer o sistema incapaz de iniciar no meu caso.

A alteração proposta de HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun para @chcp 65001>nul serviu apenas bem para o meu propósito. (graças a Ole_Brun )

Respostas (6)

102
102
102
2011-04-12 12:22:32 +0000

Para alterar a página de código apenas para a consola, faça o seguinte:

  1. Iniciar -> Run -> regedit
  2. Vá para [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun]
  3. Altere o valor para chcp 65001
41
41
41
2013-12-07 15:36:03 +0000

Pessoalmente, não gosto de mudar o registo. Isto pode causar muitos problemas. Criei um ficheiro batch:

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

Gravei em C:\Windows\System32 como switch.bat.

Criei um link para cmd.exe no Ambiente de Trabalho.

Nas propriedades do atalho cmd, alterei o destino para: C:\Windows\System32\cmd.exe /k switch

Voilá, quando preciso de escrever em UTF-8, utilizo este link.

35
35
35
2015-06-13 20:39:21 +0000

Reg ficheiro:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:fde9
  1. Valor deve estar em hex ](//stackoverflow.com/a/34005301)
  2. A linha superior tem de ser incluída exactamente como é
  3. HKEY_CURRENT_USER não pode ser abreviado
  4. dword não pode ser omitido

Prompt de comando:

REG ADD HKCU\Console\%SystemRoot^%_system32_cmd.exe /v CodePage /t REG_DWORD /d 65001
  1. O valor pode estar em dec ou hex
  2. %SystemRoot% tem de ser evitado
  3. REG_DWORD não pode ser omitido

PowerShell:

New-Item -ErrorAction Ignore HKCU:\Console\%SystemRoot%_system32_cmd.exe
Set-ItemProperty HKCU:\Console\%SystemRoot%_system32_cmd.exe CodePage 65001
  1. O valor pode ser em dec ou hex
  2. -Type DWord é assumido com PowerShell 3+
  3. Pode ser usado com ni -> New-Item
  4. Pode utilizar sp -> Set-ItemProperty
  5. Pode utilizar -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. O valor pode ser em dec ou hex
  2. Pode utilizar `/ -> Reg ficheiro:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:fde9
  1. Valor deve estar em hex ]&003
  2. A linha superior tem de ser incluída exactamente como é
  3. HKEY_CURRENT_USER não pode ser abreviado
  4. dword não pode ser omitido

Prompt de comando:

REG ADD HKCU\Console\%SystemRoot^%_system32_cmd.exe /v CodePage /t REG_DWORD /d 65001
  1. O valor pode estar em dec ou hex
  2. %SystemRoot% tem de ser evitado
  3. REG_DWORD não pode ser omitido

PowerShell:

New-Item -ErrorAction Ignore HKCU:\Console\%SystemRoot%_system32_cmd.exe
Set-ItemProperty HKCU:\Console\%SystemRoot%_system32_cmd.exe CodePage 65001
  1. O valor pode ser em dec ou hex
  2. -Type DWord é assumido com PowerShell 3+
  3. Pode ser usado com ni -> New-Item
  4. Pode utilizar sp -> Set-ItemProperty
  5. Pode utilizar -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. O valor pode ser em dec ou hex
  2. Pode utilizar
  3. Pode utilizar HKCU -> HKEY_CURRENT_USER
  4. Pode utilizar user -> HKEY_CURRENT_USER
10
10
10
2019-05-11 14:44:42 +0000

Na construção de 1809 do Windows 10 consegui resolver isto permanentemente indo ao sistema Language settings, seleccionando Administrative language settings, clicando em Change system locale... e marcando a caixa Beta: Use Unicode UTF-8 for worldwide language support e depois reiniciando o meu pc.

Desta forma aplica-se a todas as aplicações, mesmo àquelas que não começo a partir de um prompt de comando! (O que era necessário para mim, uma vez que estava a tentar editar o código Agda a partir do Atom).

6
6
6
2017-09-03 20:56:45 +0000

Isto pode ser feito criando um perfil PowerShell e adicionando-lhe o comando “chcp 65001 >$null”:

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

Isto não requer a edição do registo e, ao contrário da edição de um atalho, funcionará se o PowerShell for iniciado numa pasta específica utilizando o menu de contexto do Windows Explorer.

5
5
5
2016-11-02 21:11:54 +0000

O comando para alterar a página de código é chcp <codepage>. Exemplo: chcp 1252. Deverá escrevê-lo numa janela Powershell. Para evitar o incómodo de o digitar sempre (se tiver sempre de alterar a página de código), pode anexá-lo à linha de comando do programa. Para o fazer, siga os seguintes passos:

  1. Clique com o botão direito do rato no ícone Powershell no menu Iniciar e escolha “Mais” > “Abrir localização do ficheiro”.
  2. Clique com o botão direito do rato no atalho do Powershell e seleccione “Properties”.
  3. Adicione o seguinte ao fim da linha de comando “Target”: -NoExit -Command "chcp 1252"

Seja feliz. Não se preocupe com o Registo do Windows, a menos que não tenha outra opção.