Como obter a codificação de caracteres do terminal
116
Agora eu mudo a codificação de caracteres do meu terminal gnome para "GBK" (o padrão é UTF-8), mas como posso obter o valor (codificação de caracteres) no meu Linux?
Essas variáveis de ambiente são usadas por aplicativos que usam o terminal para E / S. O emulador de terminal em si não tem nenhum conhecimento sobre eles, e sua codificação de caracteres atualmente efetiva é uma configuração em algum lugar dentro do programa do emulador (um membro de dados dentro de uma classe libvte no caso do Terminal GNOME).
JdeBP
a ordenação das variáveis sugeridas aqui não é boa. uma solução mais completa seria algo como: echo $ {LC_ALL: - $ {LC_CTYPE: - $ {LANG}}}. então, novamente, a variável sendo definida não é uma garantia de que eles são válidos, então você deve se ater ao localeprograma (como visto em outras respostas aqui).
Mike Frysinger
Como disse @JdeBP, o terminal não usa as localevariáveis de ambiente para determinar sua codificação. O terminal pode, entretanto, permitir que os aplicativos que interagem com ele saibam sua codificação, definindo as localevariáveis de ambiente. Por exemplo, no MacOS você pode escolher a codificação do terminal e, opcionalmente, definir as localevariáveis de ambiente na inicialização do terminal Terminal> Preferences> Profiles> Advanced.
Maggyero
97
locale O comando sem argumentos imprimirá os valores de todas as variáveis de ambiente relevantes, exceto LANGUAGE.
Isso é o que funcionou para mim em um sistema CentOS. Ele mostrou a codificação do sistema com base nas configurações de idioma atuais. As configurações do terminal usadas para chegar a essa máquina são uma história diferente e uma função do cliente que está sendo usado.
De todas as ofertas acima, a única sugestão que funcionou no meu Slackware64 v. 14.2 caixa foi este snippet de python. Obrigado!
Thomas Altfather Good
6
Que eu saiba, não.
Indicações de circunstanciais $LC_CTYPE, localee tal pode parecer sedutoras, mas estes são completamente separado do que codifica para a aplicação de terminal (na verdade, um emulador) passa a ser utilizado quando a exibição de caracteres sobre a tela.
A única maneira de detectar a codificação com certeza é gerar algo apenas presente na codificação, por exemplo ä, tirar uma captura de tela, analisar essa imagem e verificar se o caractere de saída está correto.
Respostas:
O terminal usa variáveis de ambiente para determinar qual conjunto de caracteres usar, portanto, você pode determinar olhando para essas variáveis:
ou
fonte
locale
programa (como visto em outras respostas aqui).locale
variáveis de ambiente para determinar sua codificação. O terminal pode, entretanto, permitir que os aplicativos que interagem com ele saibam sua codificação, definindo aslocale
variáveis de ambiente. Por exemplo, no MacOS você pode escolher a codificação do terminal e, opcionalmente, definir aslocale
variáveis de ambiente na inicialização do terminalTerminal
>Preferences
>Profiles
>Advanced
.locale
O comando sem argumentos imprimirá os valores de todas as variáveis de ambiente relevantes, exceto LANGUAGE.Para codificação atual:
Para localidades disponíveis:
Para codificações disponíveis:
fonte
Verifique a codificação e o idioma:
Obtenha todos os idiomas:
Mude para pt_PT.utf8:
fonte
Se você tiver Python:
fonte
Que eu saiba, não.
Indicações de circunstanciais
$LC_CTYPE
,locale
e tal pode parecer sedutoras, mas estes são completamente separado do que codifica para a aplicação de terminal (na verdade, um emulador) passa a ser utilizado quando a exibição de caracteres sobre a tela.A única maneira de detectar a codificação com certeza é gerar algo apenas presente na codificação, por exemplo
ä
, tirar uma captura de tela, analisar essa imagem e verificar se o caractere de saída está correto.Então não, infelizmente não é possível.
fonte
Para ver as informações de localidade atuais, use o
locale
comando. Abaixo está um exemplo no RHEL 7.8fonte