Suas informações locale não estão configuradas corretamente na máquina do servidor. Especificamente, a variável LC_CTYPE
, que indica a codificação de caracteres no terminal, não está definida corretamente (ou, eu suspeito, em tudo).
No seu terminal local, execute locale
para ver suas configurações de localidade. Você provavelmente verá (entre outras linhas) algo como LC_CTYPE=en_US.UTF-8
; o que importa aqui é a parte .UTF-8
, indicando a codificação UTF-8 . Esta é a codificação padrão de fato para texto multilíngüe no mundo unix (e além).
Você precisa passar essas informações para o servidor. A melhor maneira, se funciona, é enviar informações sobre o local através da conexão ssh. Para isso, adicione as seguintes linhas no final de ~/.ssh/config
:
Host *
SendEnv LC_* LANG
Isso requer que uma diretiva AcceptEnv
adequada esteja presente na configuração do servidor ( /etc/ssh/sshd_config
) (é por padrão no Debian).
Se isso não funcionar, e você sempre efetuar login no servidor a partir de um terminal UTF-8, adicione a linha export LC_CTYPE=en_US.UTF-8
ao seu ~/.bashrc
no servidor (ou ~/.zshrc
ou qualquer outro arquivo usado pelo seu shell ). O nome do local (por exemplo, en_US.UTF-8
) deve ser um dos oferecidos por locale -a
e deve ter .UTF-8
(ou .utf8
ou alguma variação trivial).