私は新鮮なUbuntuのインストールを持っています、そして私はgnome-terminalでsshを介して接続したいです。サーバーはLatin1を使用しています(すべてのファイルなどはLatin1です)、セッションでそれを使用します。文字が私の画面に正しく出力されるように、menu-optionで文字セットを変更しましたが、非ASCIIを正しく入力することはできません。魔法の引数をSSHに渡すか、gnome-terminalで設定があるか、またはsttyを使うべきですか?私は少し失われています。
わかった。私は今、問題を少し下に絞り込みました。コマンドラインで次の点を実行した場合
php -r 'while ($c = fread(STDIN, 1)) { echo $c; }'
_
そして、非ASCIIキーを押すと正しくエコーブします。ただし、シェルに同じキーを入力すると、何も起こりません。そのため、シェル環境(ロケール設定?)の一部の設定である必要があります。何か案は?
既存の問題は、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
を行います。
Gnome-terminalのメニューでターミナル>エンコード下のエンコーディングを変更できます。西部(ISO 8859-1)のエンコードを追加してから、それに切り替えます。