SSHには外国の文字は表示されません。

SSHには外国の文字は表示されません。

ssh(管理者アクセス権を持たない)リモートサーバーの使用にはいくつかの問題があります。特に、韓国語とキリル文字を含む複数のフォルダがあります。

を使用して親フォルダの内容を表示すると、ls文字は「?」にエスケープされます。おそらくエスケープされているように見える韓国語文字の数が韓国語文字の数よりはるかに多いことは注目に値します。しなければならないそこに。

私は私が使用しているターミナルプログラムがこれらの文字をsftp完全に表示するので、これらの文字を表示できることを知っています。この問題は、私が試したすべての端末で発生します。

機械の概要

ローカルマシン:

  • Linux 2.6.32-5-686、i686
  • Debian GNU/Linux 6.0.2 (スクイズ)
  • 管理者権限があります

リモートサーバー:

  • Linux 2.6.32-bpo.5-amd64、x86_64
  • Debian GNU/Linux 5.0.8(レニー)
  • 管理者権限と物理権限がありません。

他の重要な統計や一部の情報を見逃している可能性がありますのでお詫び申し上げます。私はWindowsではなく、コンピューティングの側面全体に初めて触れたので、ここで何をしているのかほとんど分かりません。

答え1

あなたのロケールサーバーコンピュータの情報が正しく設定されていません。特に、LC_CTYPE端末の文字エンコーディングを表す変数が正しく設定されていません(またはまったく設定されていないようです)。

ローカル端末で実行してlocaleロケールを確認します。 (他の行の中から)次の内容を見ることができますLC_CTYPE=en_US.UTF-8。ここで重要なのは、次を.UTF-8示す部分です。UTF-8コーディング。これは、Unixの世界(およびそれ以上)の多言語テキストの事実上の標準エンコーディングです。

この情報をサーバーに渡す必要があります。可能であれば、最善の方法はSSH接続を介してロケール情報を送信することです。これを行うには、最後に次の行を追加します~/.ssh/config

Host *
SendEnv LC_* LANG

これには、サーバー構成にAcceptEnv適切なディレクティブ()が必要です(Debianではデフォルト)。/etc/ssh/sshd_config

これがうまくいかず、常にUTF-8端末からサーバーにログインしている場合は、サーバーのファイル(またはシェルが使用するファイル)にこの行を追加してくださいexport LC_CTYPE=en_US.UTF-8。たとえば、ロケール名は指定された名前の1つでなければならず、ロケール名があるか少し変更されている必要があります。~/.bashrc~/.zshrcen_US.UTF-8locale -a.UTF-8.utf8

関連情報