SSHと文字エンコーディング

SSHと文字エンコーディング

sshVPSに入ると画面irssiで起動します。誰かがUnicode文字(©や€など)を送信すると、irssiセッション画面で使用するとゴミが表示されますssh。 irssiのプロキシモジュールを使用して自分のローカルコンピュータirssiで実行されているirssiのモジュールに接続すると、正しく表示されます。

同様に、オフスクリーン(VPS)でghciを実行してこれらの文字のいずれかを入力すると、競合が発生します。

そのため、SSHまたはシステム設定でVPSに接続するときに何らかの文字エンコードの問題があるようです。

この問題の原因をどのように把握して解決できますか?

詳細:

クライアントシステム

  • Arch Linux x64
  • UTF-8エンコーディング

VPSシステム

  • Ubuntuサーバー10.04
  • 不明なエンコーディングを使用してください。これをどうやって見つけますか? (/etc/rc.confでArchを探すだけです)

答え1

このlocaleコマンドを実行すると、ロケールに関する情報が提供されます。文字エンコーディングは設定に従って提供されますLC_CTYPE

Ubuntuではデフォルトのロケールが/etc/default/locale。 VPSLC_CTYPEで設定して文字エンコーディングを変更できます。~/.profile

export LC_CTYPE=en_US.UTF-8

ロケールが利用可能であることを確認する必要がありますen_US.UTF-8。 Ubuntuは、要求されたロケールのロケールデータのみを生成します。このパッケージをインストールすると、すべての英語のロケールを使用できますlanguage-pack-en-base。手動で作成を要求できます。

sudo locale-gen en

特定のロケールがインストールされていることを確認するために項目を追加することもできます/var/lib/locales/supported.d/local(行の追加などen_US.UTF-8 UTF-8)。

答え2

実際、LC_CTYPE に提供される値はロケールです。名前。名前に文字セットエンコーディングを含めることは慣例ですが、必須ではありません。

ただし、文字セットを正確に知りたい場合は、コマンドはです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"

(上記のLC_TYPE値に文字セットが表示されないことに注意してください。)

関連情報