Atualmente, estou executando o Windows 7 x64 e geralmente quero que todas as ferramentas do console funcionem com UTF-8 em vez da página de código padrão 850.
A execução chcp 65001
no prompt de comando antes do uso de qualquer ferramenta ajuda, mas existe alguma maneira de definir a página de código padrão?
Atualizar:
Alterar o HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP
valor para 65001
aparecer para tornar o sistema incapaz de inicializar no meu caso.
Proposta de mudança do HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun
que @chcp 65001>nul
serviu apenas bem para o meu propósito. (graças a Ole_Brun )
A
versões das funções do Windows está quebrado. Todo o código precisa ser portado para usar asW
versões.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP
é usado como fallback para ambientes não unicode (não utf), obviamente você tenta forçá-lo a um 'unicode', pois vê que é controverso por definição. O Windows trava provavelmente porque algumas coisas do sistema na inicialização dependem do conjunto de caracteres não unicode para funcionar.Respostas:
Para alterar a página de código somente para o console, faça o seguinte:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun]
chcp 65001
fonte
@chcp 65001>nul
, enquanto nesta resposta aceita, échcp 65001
. Quais sao as diferenças entre os dois?chcp 65001
fará com que cada prompt de comando aberto imprima 'Página de código ativa: 65001' e@chcp 65001>nul
evite qualquer saída.Autorun
não está presente para mim no Windows 8.1.Autorun
não estiver presente, você pode adicionar um Novo Valor de Cadeia de caracteres com o conteúdo de@chcp 65001>nul
Pessoalmente, não gosto de alterar o registro. Isso pode causar muitos problemas. Eu criei um arquivo em lote:
Salvei em
C:\Windows\System32
como switch.bat.Eu criei um link para o cmd.exe na área de trabalho.
Nas propriedades do atalho cmd, altere o destino para:
C:\Windows\System32\cmd.exe /k switch
Voilá, quando preciso digitar UTF-8, uso este link.
fonte
Active code page: 65001
em stdout. Então, se você estiver fazendo algo assimCHCP 65001 && mycommand.exe
, terá a página de código impressa no início. Você precisaCHCP 65001 >nul && mycommand.exe
Arquivo Reg:
Prompt de comando:
PowerShell:
-Type DWord
é assumido com o PowerShell 3+ni -> New-Item
sp -> Set-ItemProperty
-ea 0 -> -ErrorAction Ignore
Cygwin:
/ -> \
HKCU -> HKEY_CURRENT_USER
user -> HKEY_CURRENT_USER
fonte
chcp 65001
em um arquivo de comando de execução automática. Veja stackoverflow.com/a/17405182/315083O comando para alterar a página de código é
chcp <codepage>
. Exemplo:chcp 1252
. Você deve digitá-lo em uma janela do PowerShell. Para evitar o incômodo de digitá-lo sempre (se você sempre precisar alterar a página de código), você pode anexá-lo à linha de comando do programa. Para fazer isso, execute as seguintes etapas:-NoExit -Command "chcp 1252"
Seja feliz. Não se preocupe com o Registro do Windows, a menos que você não tenha outra opção.
fonte
-NoExit -Command "chcp 1252 > null"
também omite a mensagem sobre a página de códigos selecionada no início.Isso pode ser feito criando um perfil do PowerShell e adicionando o comando "chcp 65001> $ null" a ele:
Isso não requer edição do registro e, diferentemente da edição de um atalho, funcionará se o PowerShell for iniciado em uma pasta específica usando o menu de contexto do Windows Explorer.
fonte
Na versão 1809 do Windows 10, eu consegui resolver isso permanentemente, acessando o sistema
Language settings
, selecionandoAdministrative language settings
, clicandoChange system locale...
e marcando aBeta: Use Unicode UTF-8 for worldwide language support
caixa e reiniciando o meu PC.Dessa forma, aplica-se a todos os aplicativos, mesmo aqueles que não inicio em um prompt de comando!
(O que foi necessário para mim, pois estava tentando editar o código Agda a partir do Atom.)
fonte