壊れたgnu-screenセッションがUTF-8を正しく表示しない

壊れたgnu-screenセッションがUTF-8を正しく表示しない

(問題を表示する際のEmacsの役割を明確にするために編集されました。)

現在gnu-screenセッションが破損しているため、EmacsはUTF-8文字を正しく表示できません。

Emacsが新しく起動したプロセスgnu-screenでUTF-8文字を正しく表示することを確認しましたが、現在破損しているgnu-screenセッションを新しいセッションに置き換えることは非常に支障をきたす可能性があります。

私はこの破損したgnu-screenセッションの問題をさらに解決するよう努めており、それを修正できることを願っています。


FWIWは、問題を診断するためにこれまでに行ったことの説明を含む、以下にさらに詳細な情報を提供しました。

gnu-screen私は数日前にオフィスでこのコースを始めました。オペレーティングシステムワークステーション

% screen -U

...(いつものように)。それ以来、私は複数のコンピュータでこのセッションを再接続しました(おそらくssh私が働いているワークステーションに最初に接続した後です)。

% screen -U -dR

(つまり、これは私がいつもやっていることです。)私は今朝私のワークステーション(プロセスが実際に実行されているコンピュータ)でgnu-screenまさにこれをしました。

今日は、このセッションの作成以来、gnu-screenASCII以外のUTF-8文字を含むファイルを最初に処理する必要がありました。それから私はこのgnu-screenセッションがこれらの文字をすべて表示して?ディスプレイを使用できなくするので、何らかの方法で破損する必要があることに気づきました。

(すでに述べたように、これらのUTF-8リッチファイルは新しく開始されたセッションで正しく表示されるため、ここでは「破損」と呼ばれる特定のセッションに表示の問題があることがわかりますgnu-screen。に表示されるので、問題はセッションをホストするターミナルプログラムにはありません。gnu-screen???gnu-screengnu-screen返品問題が特定のEmacsセッションにないことを確認してください。破損したgnu-screenセッションですべて?新しいEmacsセッションは、特定のEmacsセッションの問題に関連するUTF-8文字をとしてマークします。 )

私はこれを実行しutf8て確認しました。on

:utf8 on on

の出力は:info次のとおりです。

(1,5)/(210,52)+10000 +(-)flow app log UTF-8 0(zsh)

そして、FWIW:

% /usr/local/bin/screen --version
Screen version 4.00.03 (FAU) 23-Oct-06

また、私はそれを指摘する必要があります新しい

この問題を解決するにはどうすればよいですか?


修正する:Drav SloanとStephane Chazelasはどちらも私の地域について尋ねました。

% locale
LANG=
LC_COLLATE="C"
LC_CTYPE="C"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

現在、OS XIの場合、ロケール固有の変数は設定されません。

Linuxシステムでは、私の.zshenv設定は次のとおりです。

export LANG=en_US.utf8
export LC_ALL=en_US.utf8

...しかし、Darwinの.zshenvに同じ行を置くと、「ロケール設定に失敗しました」というエラーメッセージが表示されます。私はDarwin / Lionに適した場所を見つけるために何時間も頭をぶつけたことを漠然と覚えています。 「何も設定しない」は、おそらく問題に対する「最悪の」解決策です。結局のところ、gnu-screen少なくとも新しいセッションは明示的なロケールなしでUTF-8文字を正しく表示します。しかし、明らかにDarwin / Lionでロケールを正しく設定する方法を理解する必要があります...

アップデート2: いいですね。上記のエラーの原因を見つけたようです。 Darwin / Lionでは文字列がen_US.utf8無効です。代わりにen_US.UTF-8

ベストアンサー1

実行時に同じ問題が発生しました。

git clone https://github.com/jwiegley/git-scripts.git
cd git-scripts
perl git-forest 

私はこれをテストとして使用しました。デフォルトでは、utf8を正しく設定すると素晴らしいラインが得られます。それ以外の場合、見苦しいボックスや文字が表示されます。

解決策は、次のようLC_ALLに設定する必要があることです。en_US.UTF-8 今後新しい画面セッションを開始します。スクリーンセッションを作成した後、これを実行するのに疲れましたが、運はありません。

これを達成するために実行した手順は次のとおりです。

1)locale現在の設定を表示するには実行してください。私はこれを得ました(私が問題を抱えている理由を説明します:

LANG=en_US.UTF-8
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C

2)LC_ALL新しい画面セッションを作成する前にオーバーライドする必要があります。en_US.UTF-8

cshシェルを使用する場合

setenv LC_ALL en_US.UTF-8

bashシェルを使用する場合

export LC_ALL="en_US.UTF-8"

三) 次の操作をやり直して、LC_ALL設定が正しいことを確認してくださいlocale

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

4)これで、新しいスクリーンセッションを実行してgit-forestテストを実行すると、素晴らしいラインが見えます。

おすすめ記事