it-swarm-pt.tech

ssh e codificação de caracteres

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

  • Arch Linux x64
  • Codificação UTF-8

sistema VPS

  • Ubuntu Server 10.04
  • Codificação desconhecida usada. Como encontro isso? (Eu apenas tenho que procurar no meu /etc/rc.conf o Arch)
17
Macha

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).

19

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).

4
Pablo Saratxaga