Quando eu ssh
no meu VPS, tenho irssi
rodando na tela. Quando alguém envia um caractere unicode (como © ou €), irssi
exibe lixo quando eu o uso na tela em uma sessão ssh
. Se eu conectar a esse irssi
usando o módulo proxy do irssi, do irssi em execução no meu computador local, ele será exibido corretamente.
Da mesma forma, se eu executar o ghci no meu VPS (fora da tela) e inserir um desses caracteres, ele trava.
Portanto, obviamente, há algum tipo de problema na codificação de caracteres com minha conexão ao meu VPS, no ssh ou na configuração do sistema.
Como posso descobrir o que está causando isso e resolvê-lo?
Detalhes:
sistema do cliente
sistema VPS
A execução do comando locale
fornecerá informações sobre suas configurações de localidade; a codificação de caracteres é fornecida pelo LC_CTYPE
configuração.
No Ubuntu, as configurações padrão de localidade são fornecidas em /etc/default/locale
. Você pode alterar a codificação de caracteres definindo LC_CTYPE
na tua ~/.profile
no VPS, por exemplo.
export LC_CTYPE=en_US.UTF-8
Você precisará garantir que o en_US.UTF-8
locale está disponível. O Ubuntu gera apenas dados de localidade para localidades solicitadas. Todas as localidades em inglês devem estar disponíveis se você tiver o pacote language-pack-en-base
instalado. Você pode solicitar manualmente sua geração com
Sudo locale-gen en
Você também pode adicionar entradas a /var/lib/locales/supported.d/local
para garantir que um código de idioma específico esteja instalado (por exemplo, adicione a linha en_US.UTF-8 UTF-8
).
na verdade, o valor fornecido em LC_CTYPE é um código de idioma nome. É habitual, mas não obrigatório, que a codificação de charset esteja no nome.
Mas se você quiser saber, com certeza, o conjunto de caracteres, o comando será locale -k charmap
.
~$ LC_CTYPE=C locale -k charmap
charmap="ANSI_X3.4-1968"
~$ LC_CTYPE=fr_BE locale -k charmap
charmap="ISO-8859-1"
(observe como o conjunto de caracteres não aparece nos valores LC_TYPE acima).