Eu estava tendo alguns problemas para obter a saída Unicode com o PowerShell, que resolvi parcialmente usando isto:
[Console]::OutputEncoding = [Text.Encoding]::UTF8
No entanto, notei que essa configuração tem um problema. Se eu executar um comando como este:
Get-Content a.txt
Não gera em UTF8. Parece que é este o motivo:
Padrão Usa a codificação que corresponde à página de código ativa do sistema (geralmente ANSI).
Portanto, se [Console]::OutputEncoding
a página de código não muda, o que muda?
Se
[Console]::OutputEncoding
não altera a página de código, o que altera?De acordo com Definir a codificação padrão para UTF-8 no powershell, você deve usar:
O que é um pouco diferente do comando que você está usando.
Após o teste, parece que o powershell gosta de trabalhar com arquivos UTF8 codificados por BOM.
Se seus arquivos não tiverem codificação BOM, você poderá usar
-encoding utf8
.Exemplo com um arquivo UTF8 não codificado por BOM:
Navegue até esta chave:
e mude
OEMCP
para65001
. Em seguida, reinicie. Com essa correção, se você estiver usando a fonte Consolas, parece bloquear o PowerShell em um tamanho de fonte pequeno.cmd.exe
ainda funciona bem. Como solução alternativa, você pode usar o Lucida Console ou mudei para o Cascadia Mono:https://github.com/microsoft/cascadia-code