web-dev-qa-db-ja.com

コマンドで端末のエンコードを切り替える

Utf-8の代わりにウエスタンエンコーディングを使用するサーバーの1つは、非常に頻繁にsshです(これを変更する方法はありません)。

このサーバーに接続するためにbashスクリプトを書き始めたので、毎回アドレス全体を入力する必要はありませんが、このスクリプトを改善して、ターミナルウィンドウのエンコードも正しく変更したいと思います。

必要な変更は、「ターミナル」->「文字エンコーディングの設定...」->「西部(ISO-8859-1)」に移動して、マウスを使用して実行できます。現在の端末ウィンドウ/画面に対して同じことを行う端末コマンドはありますか?

明確にするために:
私はnotリモートサイトでシステムのロケールを切り替える方法に興味があります-そのシステムは他の誰かによって管理されています。そして、そこにあるlatin-1エンコーディングにどのようなものが依存するのか分かりません。私がやりたいのは、私の側のこのターミナルウィンドウに、マウスでできるのと同じように、文字エンコーディングを上記のものに切り替えさせることですおよびメニュー。

24
Tomas Aschan

この目的のために設計されたluitを探しています:

$ luit -encoding ISO-8859-1 ssh remote.Host

Sshコマンドの出力をUTF-8に変換するため、端末のエンコードを変更する必要はありません。

17
törzsmókus

まず、お気に入りのエディターで現在のロケールを編集します

Sudo gedit /var/lib/locales/supported.d/localなど

en_GB.UTF-8 UTF-8
en_US.UTF-8 UTF-8
en_GB.ISO-8859-1 ISO-8859-1
en_US.ISO-8859-1 ISO-8859-1

次にSudo dpkg-reconfigure localesを実行します

次に、LANG=en_GB.ISO-8859-1で端末を設定します

うまくいくことを願って

4
Jonathan

Gnomeターミナルはgconfを使用して設定を保存します。これらはgconftoolで操作できます。したがって、次を使用できます。

gconftool --set --type=string /apps/gnome-terminal/profiles/Default/encoding ISO-8859-1

これを12.04でテストしました。何らかの理由で、メニュー("Terminal"->"Set Character Encoding...")はリアルタイムで更新されないようですが、実際の文字エンコードは正しく更新されます。

4
andrewsomething

運用サーバーに接続するときにプロファイル(背景色)を変更するために使用した別のソリューションを次に示します。 xdotool が含まれます。

xdotoolは、目的のメニュー項目を選択するために必要なキーストロークをシミュレートします。まずキーボードで試してから、シーケンスを書き留めます。

$ xdotool key alt+t Down c Down Return

最初の文字エンコーディングを有効にします。他を選択するには、Downの前にさらにReturnキーを追加します。

注:sshの場合、~/.ssh/configファイルを使用してサーバーのエイリアスを構成することもできます。

2
nniico

私はそれをテストする方法がわかりませんが、KubuntuのKonsoleで次のことができます:

1)dbusに登録されているアプリケーションを見つける

$ qdbus

konsoleを使用しているので、簡単なqdbus | grep konsorg.kde.konsoleが得られます

2)Konsoleで現在のセッションを見つける

$ qdbus org.kde.konsole | grep Sessions
/Sessions
/Sessions/1

$ set | grep -i sessions
KONSOLE_DBUS_SESSION=/Sessions/1

3)便利な方法を見つける

$ qdbus org.kde.konsole /Sessions/1 | grep -i codec
method QByteArray org.kde.konsole.Session.codec()
method bool org.kde.konsole.Session.setCodec(QByteArray codec)

4)現在のエンコードを確認する

$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.codec
UTF-8

5)エンコードの設定

$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.setCodec ISO-8859-1
true

6)現在のエンコードを確認する

$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.codec
ISO-8859-1

Ubuntuには同様のターミナルプログラムがありますが、正しいサービス名、パス、メソッド、および引数を使用して、いくつかの不可解な作業を行う必要があります。

2
jippie

xtermで、 制御シーケンス を使用してエンコードを変更します。たとえば、bash内では、次を実行してUTF-8文字セットを取得します。

echo -n $'\e%G'

ISO 8859-1コーディングは、次を実行することでアクセスできます。

echo -n $'\e%@'
1
vsnprintf