Esta pergunta se refere ao meu sistema Ubuntu 18, da seguinte forma ...
% uname -a
Linux myhost.name.net 4.15.0-45-generic #48-Ubuntu SMP Tue Jan 29 16:28:13 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Não sei há quanto tempo o seguinte está acontecendo no meio de minhas atualizações regulares do sistema, mas agora notei que todas as minhas janelas de terminal estão escrevendo UTF-8
caracteres. Eu quero que todas as janelas do terminal usem us.ascii
(ou possivelmente iso-8859-1
). Não consigo encontrar em nenhum lugar onde isso está definido.
Além disso, todas as entradas do teclado parecem estar chegando como UTF-8
, e eu também quero que seja us.ascii
ou iso-8859-1
.
Por padrão, a LANG
variável é definida como en_US.UTF-8
em todos os shells executados nas janelas do meu terminal, mas não estou definindo-a dessa maneira em nenhum arquivo de configuração.
Isso ocorre em xterm
, rxvt
, e urxvt
, e nenhum desses programas está configurado para utilizar UTF-8
, que eu saiba.
Estou correndo XFCE4
, se isso faz alguma diferença. Também não consigo encontrar nenhuma configuração para isso nas XFCE4
configurações.
Alguém pode sugerir uma maneira de redefinir meu sistema para que todas as janelas do terminal sempre exibam us.ascii
ou iso-8859-1
, e todas as entradas do teclado também sejam us.ascii
ou iso-8859-1
?
Muito obrigado.
Você não está encontrando nenhuma configuração específica porque a grande maioria dos softwares Linux modernos decide o conjunto de caracteres a ser usado pelas variáveis de ambiente de localidade. Use o
locale
comando para visualizar o conjunto completo de configurações de localidade atuais.Você verificou
/etc/default/locale
? É o arquivo de configuração padrão do Debian para definir a localidade padrão do sistema. Se você quiser usar iso-8859-1 em vez de UTF-8, você deve:en_US ISO-8859-1
linha não esteja comentada/etc/locale.gen
e executesudo locale-gen
após editar o arquivo, se não foiLANG
variável de localidade (ou pelo menosLC_CTYPE
) comoen_US.iso88591
(ou qualquer que seja a forma correta de acordo comlocale -a | grep en_US
)Se o problema é que você está se conectando do seu sistema Ubuntu 18 UTF-8 a sistemas legados que usam ISO-8859-1 em vez de UTF-8, você pode considerar inserir uma camada de mapeamento de caracteres em suas conexões de saída em vez de fazer o downgrade de todo o seu sistema para lidar com a codificação legada. Faça um pequeno script (ou uma função shell) como este:
(Se você quiser impor US-ASCII estrito para o ponto de extremidade remoto, substitua
ISO 8859-1
porASCII
.)Dê o nome que quiser. Use este script/função em vez do comando normal
ssh
ao se conectar aos sistemas usando a codificação de caracteres herdada.