web-dev-qa-db-ja.com

UTF-8クライアントからSSHを介してLatIn1サーバーに接続する方法

私は新鮮なUbuntuのインストールを持っています、そして私はgnome-terminalでsshを介して接続したいです。サーバーはLatin1を使用しています(すべてのファイルなどはLatin1です)、セッションでそれを使用します。文字が私の画面に正しく出力されるように、menu-optionで文字セットを変更しましたが、非ASCIIを正しく入力することはできません。魔法の引数をSSHに渡すか、gnome-terminalで設定があるか、またはsttyを使うべきですか?私は少し失われています。

アップデート:

わかった。私は今、問題を少し下に絞り込みました。コマンドラインで次の点を実行した場合

php -r 'while ($c = fread(STDIN, 1)) { echo $c; }'
 _

そして、非ASCIIキーを押すと正しくエコーブします。ただし、シェルに同じキーを入力すると、何も起こりません。そのため、シェル環境(ロケール設定?)の一部の設定である必要があります。何か案は?

2
troelskn

既存の問題は、Bashが使用するreadlineと関係があります。 /etc/inputrcまたは~/.inputrcのいずれかに次のものを入れる。

set meta-flag on
set output-meta on
set convert-meta off

meta-flagは、端末がサポートできるのかどうかにかかわらず、8ビットの入力を有効にします(つまり、読み取る文字で8番目のビットをクリアしません)。 output-metaは、メタプレフィックスされたエスケープシーケンスではなく、8ビットが直接設定された文字の表示を有効にします。 convert-metaがオンのとき、ReadLineは8番目のビットに設定されている文字をASCIIキーシーケンス)に変換します。(Metaプレフィックスとしてエスケープを使用してエスケープを使用して) 。それをオフにします。これらと他の変数の詳細については、man readlineを行います。

3
Vebjorn Ljosa

Gnome-terminalのメニューでターミナル>エンコード下のエンコーディングを変更できます。西部(ISO 8859-1)のエンコードを追加してから、それに切り替えます。

2
Vebjorn Ljosa