web-dev-qa-db-ja.com

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

VPSにsshすると、画面でirssiが実行されます。誰かがユニコード文字(©や€など)を送信すると、irssiセッションの画面から使用すると、sshが文字化けを表示します。ローカルコンピューターで実行されているirssiから、irssiのプロキシモジュールを使用してそのirssiに接続すると、正しく表示されます。

同様に、VPS(画面外)でghciを実行し、それらの文字の1つを入力すると、クラッシュします。

つまり、sshまたはシステムセットアップのいずれかで、VPSへの接続に何らかの文字エンコードの問題があることは明らかです。

これを引き起こしている原因を見つけて解決するにはどうすればよいですか?

詳細:

クライアントシステム

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

VPSシステム

  • Ubuntu Server 10.04
  • 不明なエンコーディングが使用されています。これをどうやって見つけるのですか? (私は自分の/etc/rc.confでArchを探すだけです)
17
Macha

localeコマンドを実行すると、ロケール設定に関する情報が得られます。文字エンコードはLC_CTYPE設定で指定されます。

Ubuntuでは、デフォルトのロケール設定は/etc/default/localeで提供されます。 VPSのLC_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を追加)。

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

しかし、確かに、文字セットを知りたい場合、コマンドは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値に表示されないことに注意してください)。

4
Pablo Saratxaga