web-dev-qa-db-ja.com

「less」コマンドにUTF-8を処理させる方法は?

私のMac端末では、UTF-8の印刷は一般的に機能しますが、lessは正しく機能しません。

だからこれは正しく動作します:

$  echo -e '\xe2\x82\xac'   
€

しかし、それをlessにパイプすると、次のようになります。

$  echo -e '\xe2\x82\xac' | less  
<E2><82><AC>

これをどのように修正できますか?

診断用:

Mac OS 10.6.8を使用しています。バージョン418、ターミナル2.1.2(273.1)未満。

私のロケールの出力はこれです:

$ locale
LANG="en_US.UTF-8"
LC_COLLATE="C"
LC_CTYPE="C"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL="C"
32
user9474

さて、ググってみて答えを見つけました。どうやら、LESSCHARSETは次のように設定する必要があります:

export LESSCHARSET=utf-8

現在、lessは問題なく動作します。

44
user9474

lessにUnicode文字がいくつか表示されていても、lessで絵文字を表示できない場合は、lessを最新バージョンにアップグレードしてみてください。 Mac OS Xでは、バージョン458から481に移行して問題が修正されました(たとえば、git logでコミットメッセージに絵文字を表示できるようになりました)。

自作がある場合は、brew install homebrew/dupes/lessを実行して、システムを新しいバージョンに置き換えることができます。

6
Luke Francl

私のために働く

LANG=
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
2
topdog

私はこれをググって、私のために働いた以下の環境変数を試しました:

export LC_ALL=en_US.UTF-8
export LANG=en_us.UTF-8

LC_ALLが複数の異なる答えで見つかったので、これが正しいと思います。しかし、おそらく唯一の正しい答えではありません。もちろん、この質問に対するより正確な答えがあるかもしれません。

とにかく、もう少しグーグルでこの変数の説明をしてくれました:

LC_ALLこの変数は、すべてのロケールカテゴリの値を決定します。 LC_ALL環境変数の値は、LC_(LC_COLLATE、LC_CTYPE、LC_MESSAGES、LC_MONETARY、LC_NUMERIC、LC_TIME)で始まる他の環境変数やLANG環境変数よりも優先されます。

ソース: http://pubs.opengroup.org/onlinepubs/007908799/xbd/envvar.html

これをすべてを支配する言語変数だと私に思わせる:)

1
Melvin Loos

更新してください[less][1]

醸造でそれを行います。

brew install homebrew/core/less
0
Ahmad Awais