Estou tendo alguns problemas com o uso ssh
e um servidor remoto (ao qual não tenho acesso de administrador) - Especificamente, existem algumas pastas com texto em coreano e cirílico.
Quando eu mostro o conteúdo da pasta pai ls
, os caracteres são escapados como "?". Talvez seja digno de nota que os caracteres coreanos parecem escapar muito mais do que o número de caracteres que deveriam estar lá.
Eu sei que o programa do terminal que estou usando pode exibir os caracteres, como o uso os sftp
exibe perfeitamente. O problema ocorre em todos os terminais que tentei.
Resumo de máquinas
Máquina local:
- Linux 2.6.32-5-686, i686
- Debian GNU / Linux 6.0.2 (squeeze)
- Ter acesso de administrador
Servidor remoto:
- Linux 2.6.32-bpo.5-amd64, x86_64
- Debian GNU / Linux 5.0.8 (lenny)
- Não tem acesso de administrador nem físico
Provavelmente perdi outras estatísticas vitais ou informações, e nesse caso peço desculpas. Sou relativamente novo em todo o lado não-Windows da computação, então mal sei o que estou fazendo aqui.
fonte
locale
elocale -a
comandos, local e remotamente, por favorRespostas:
Suas informações de localidade não estão configuradas corretamente na máquina do servidor. Especificamente, a
LC_CTYPE
variável, que indica a codificação de caracteres no terminal, não está definida corretamente (ou, desconfio).No seu terminal local, corra
locale
para ver suas configurações de localidade. Você provavelmente verá (entre outras linhas) algo comoLC_CTYPE=en_US.UTF-8
; o que importa aqui é a.UTF-8
parte, indicando a codificação UTF-8 . Esta é a codificação padrão de fato para texto multilíngue no mundo unix (e além).Você precisa passar essas informações para o servidor. A melhor maneira, se funcionar, é enviar informações de localidade por meio da conexão ssh. Para isso, adicione as seguintes linhas no final de
~/.ssh/config
:Isso requer que uma
AcceptEnv
diretiva 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 faz 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 (~/.zshrc
ou a qualquer arquivo que seu shell use). O nome da localidade (por exemploen_US.UTF-8
) deve ser um dos oferecidos porlocale -a
e deve ter.UTF-8
(.utf8
ou alguma variação trivial).fonte
locale
saídas correspondentes). No entanto,locale -a
remotamente forneceu apenas en_GB.utf8 e en_US.utf8. Obrigado!locale charmap
/etc/ssh/ssh_config
exigido também enviandoLANG
(SendEnv LANG LC_*
)export LC_CTYPE=en_US.UTF-8
ao meu~/.profile
no lado do servidor. Adicioná-lo~/.bashrc
parecia não ter efeito.