Codificação UTF-8 (CHCP 65001) no PowerShell

  1. Unicode no PowerShell
  2. Alterar o Local do Sistema para Usar a Codificação UTF-8 no Windows PowerShell
  3. Definir a Codificação na Variável $PSDefaultParameterValues para Usar a Codificação UTF-8 no Windows PowerShell
  4. Usar o Comando chcp para Alternar para a Codificação UTF-8 no Windows PowerShell
  5. Benefícios de Usar a Codificação UTF-8 no PowerShell
  6. Conclusão
Codificação UTF-8 (CHCP 65001) no PowerShell

A codificação UTF-8, representada por CHCP 65001 no PowerShell, é uma ferramenta crucial para trabalhar com caracteres multilíngues e especiais no console. Este artigo fornecerá um guia abrangente sobre como utilizar a codificação UTF-8 no PowerShell, desde a compreensão de sua importância até a implementação prática.

Unicode no PowerShell

Unicode é um padrão de codificação de caracteres mundial. Ele define como os caracteres em arquivos de texto, páginas da web e outros documentos são representados.

O sistema computacional usa Unicode para manipular caracteres e strings. A codificação padrão no PowerShell é Windows-1252.

Unicode foi desenvolvido para suportar caracteres de todas as línguas do mundo. O PowerShell suporta uma codificação de caracteres Unicode por padrão.

UTF-8 e UTF-16 são as codificações Unicode mais comuns. O PowerShell sempre usa BOM em todas as codificações Unicode, exceto UTF7.

O BOM (byte-order-mark) é uma assinatura Unicode incluída nos primeiros bytes de um arquivo ou fluxo de texto que indica a codificação Unicode.

Compreendendo a Codificação UTF-8

UTF-8 é um padrão de codificação de caracteres que usa codificação de largura variável para representar texto. Ele é capaz de codificar virtualmente todos os caracteres em Unicode, tornando-se a codificação de caracteres mais amplamente utilizada na internet.

No contexto do PowerShell, a codificação UTF-8 garante que caracteres de diferentes línguas, símbolos e caracteres especiais sejam exibidos e processados corretamente na janela do console.

Alterar o Local do Sistema para Usar a Codificação UTF-8 no Windows PowerShell

Há uma opção para mudar o local do sistema (idioma atual para programas não-Unicode) no Windows. Mas esse recurso ainda está em versão beta.

Vá para Configurações de Região no Painel de Controle ou abra intl.cpl a partir do programa Executar (Windows+R).

alterar a localidade do sistema para usar codificação UTF-8 no PowerShell

Abra a aba Administrativo e clique em Alterar local do sistema. Em seguida, marque a opção Beta, conforme mostrado na imagem abaixo.

use unicode UTF-8 para suporte a idiomas em todo o mundo

Depois disso, pressione OK e reinicie o computador para aplicar as configurações.

Após reiniciar o computador, você pode verificar a variável $OutputEncoding para visualizar a codificação atual.

$OutputEncoding

Saída:

Como você pode ver, a codificação atual é Unicode (UTF-8).

BodyName          : utf-8
EncodingName      : Unicode (UTF-8)
HeaderName        : utf-8
WebName           : utf-8
WindowsCodePage   : 1200
IsBrowserDisplay  : True
IsBrowserSave     : True
IsMailNewsDisplay : True
IsMailNewsSave    : True
IsSingleByte      : False
EncoderFallback   : System.Text.EncoderReplacementFallback
DecoderFallback   : System.Text.DecoderReplacementFallback
IsReadOnly        : True
CodePage          : 65001

Agora, você pode visualizar os caracteres de outras línguas no PowerShell.

Get-Content test.txt

Saída:

만나서 반가워요

Definir a Codificação na Variável $PSDefaultParameterValues para Usar a Codificação UTF-8 no Windows PowerShell

$PSDefaultParameterValues é uma variável automática embutida no PowerShell que permite definir valores padrão para parâmetros de cmdlets. Isso significa que você pode especificar valores padrão para parâmetros de cmdlets sem ter que fornecê-los explicitamente toda vez que usar o cmdlet.

Você pode executar o seguinte comando para ativar a codificação UTF-8 no PowerShell.

$PSDefaultParameterValues = @{'*:Encoding' = 'utf8' }

É válido apenas para o console do PowerShell atual. Ele será redefinido para o padrão após você sair da janela do PowerShell.

Get-Content test.txt

Saída:

만나서 반가워요

Vários cmdlets no PowerShell têm o parâmetro -Encoding para especificar a codificação para diferentes conjuntos de caracteres. Alguns deles são Add-Content, Set-Content, Get-Content, Export-Csv, Out-File, etc.

O parâmetro -Encoding suporta esses valores: ascii, bigendianunicode, oem, unicode, utf7, utf8, utf8BOM, utf8NoBOM, utf32.

Usar o Comando chcp para Alternar para a Codificação UTF-8 no Windows PowerShell

Para alternar para a codificação UTF-8 no PowerShell, use o comando chcp seguido de 65001:

chcp 65001

Este comando informa ao PowerShell para usar a codificação UTF-8 para entrada e saída de caracteres.

Aqui está o que este comando faz em detalhe:

  • chcp: Este é um comando no prompt de comando do Windows e no PowerShell. Ele significa "Alterar Página de Código". A página de código determina como os caracteres são codificados e exibidos na janela do console.

  • 65001: Neste contexto, 65001 representa a página de código para codificação UTF-8. UTF-8 é uma codificação de caracteres de largura variável capaz de codificar todos os possíveis caracteres, ou pontos de código, em Unicode.

    • UTF-8: É uma codificação de caracteres amplamente utilizada que pode representar quase todos os caracteres de todas as línguas humanas. É especialmente prevalente na internet.
  • Alterar para UTF-8 (65001): Quando você executa chcp 65001, está dizendo ao PowerShell para usar a codificação UTF-8 para entrada e saída de caracteres no console. Isso pode ser útil ao trabalhar com dados de texto que incluem caracteres de diferentes línguas e símbolos.

    Por exemplo, se você está lidando com arquivos ou dados que contêm caracteres não ingleses, definir a página de código para UTF-8 garante que esses caracteres sejam exibidos corretamente no console.

Redefinindo para a Página de Código Padrão

Lembre-se de que alterar a página de código pode afetar como alguns aplicativos de console se comportam, portanto é geralmente uma boa prática redefini-la para a página de código padrão (geralmente 437 para inglês) quando você terminar de usar UTF-8.

Para redefinir a página de código para o padrão, você pode usar o comando:

chcp 437

Isso irá retornar à página de código padrão do seu sistema, que é adequada para texto em inglês.

Benefícios de Usar a Codificação UTF-8 no PowerShell

  1. Suporte Multilíngue: UTF-8 permite que o PowerShell manipule texto em várias línguas, garantindo exibição e processamento corretos de caracteres de diferentes scripts.
  2. Caracteres Especiais: É crucial ao lidar com caracteres especiais como emojis ou símbolos matemáticos que não são representados em codificações padrão.
  3. Manipulação de Arquivos: Ao trabalhar com arquivos de texto que incluem caracteres de várias línguas, usar UTF-8 garante operações de arquivo precisas.
  4. Processamento de Dados: Se você está lidando com dados que contêm caracteres não ingleses, definir a página de código para UTF-8 garante manuseio e processamento corretos.

Considerações Potenciais

  1. Aplicativos de Console: Alterar a página de código pode afetar como alguns aplicativos de console se comportam. Sempre redefina para a página de código padrão (chcp 437 para inglês) quando terminar de usar UTF-8.
  2. Compatibilidade: Certifique-se de que os programas ou scripts que você está executando no PowerShell podem lidar com a codificação UTF-8. Aplicativos mais antigos podem não suportá-la totalmente.

Casos de Uso Práticos

  1. Leitura de Arquivos: Ao ler arquivos de texto com caracteres não ingleses, usar UTF-8 garante representação precisa.
  2. Extração de Dados da Web: Se você está extraindo texto de sites que podem conter caracteres de várias línguas, UTF-8 garante interpretação correta.
  3. Saídas de Scripts: Se seus scripts geram saídas com caracteres não ingleses, usar UTF-8 garante que eles sejam exibidos corretamente.
  4. Sessões Interativas do PowerShell: Para sessões interativas onde você precisa inserir ou exibir texto com caracteres especiais, a codificação UTF-8 é inestimável.

Conclusão

A codificação UTF-8 (CHCP 65001) no PowerShell é uma ferramenta poderosa para lidar com caracteres multilíngues e especiais no console. Ela permite a representação e o processamento preciso de texto de várias línguas e scripts. Compreender quando e como usar a codificação UTF-8 garante uma experiência contínua ao trabalhar com diversos conjuntos de caracteres.

Lembre-se de considerar a compatibilidade de programas ou scripts com UTF-8 e sempre voltar à página de código padrão quando necessário. Ao aproveitar o poder da codificação UTF-8, você estará equipado para lidar com uma ampla gama de dados textuais com confiança e precisão no PowerShell.

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website