web-dev-qa-db-ja.com

ssh backspaceは、2文字ではなく1文字を削除します(utf-8記号)

Sshを使用してリモートコンピューターにアクセスし、bashコマンドを実行して、標準入力ストリームを使用して記号を入力します。

テストを読む; echo $ test

英語の文字を入力し、バックスペースを使用してそれらを削除してから、他の文字を入力して、この手順を何度でも繰り返してもかまいません。しかし、ロシア語の記号のように、英語の記号のように1バイトではなく2バイトを必要とする他のutf-8記号を使用すると、災害になります。例:次のように入力します:

абвгдежз

その後、バックスペースを8回使用し、他の記号を入力します。

あいさつ

そして、Enterキーを押します。しかし、最後の入力と同じ結果になる代わりに、次のようになります。

абвгпривет

これは、8つのバックスペースが4つのシンボルのみを削除したことを意味します。

私はlinuxubuntu12.04を使用しています。さまざまなコンソールを試しました:標準のもの、ターミネーター。さまざまなタイプのバックスペースオプション(ASCII-delまたはCtrl + Hなど)。 $ LC_TYPEをru_RU.UTF-8に設定しますが、何も機能しません。ローカルコンソールを使用しても、このような問題はありません。前もって感謝します。

更新:この問題のビデオもあります。 youtubeでご覧ください

3

実行することでこれを回避できます

stty iutf8

そこにSSH接続するたびにサーバー上で。残念ながら、このバグは2005年から存在しています。詳細については、 debianフォーラム をご覧ください。 .bashrcファイルの最後にこの行を追加することもできます。

2
twonegatives

LC_CTYPEをUTF-8ロケールに設定する必要があります。 ru_RU.UTF-8またはen_US.UTF-8locale -aを使用して、使用可能なロケールを一覧表示できます。

3
NCao