私の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"
さて、ググってみて答えを見つけました。どうやら、LESSCHARSET
は次のように設定する必要があります:
export LESSCHARSET=utf-8
現在、less
は問題なく動作します。
less
にUnicode文字がいくつか表示されていても、less
で絵文字を表示できない場合は、less
を最新バージョンにアップグレードしてみてください。 Mac OS Xでは、バージョン458から481に移行して問題が修正されました(たとえば、git log
でコミットメッセージに絵文字を表示できるようになりました)。
自作がある場合は、brew install homebrew/dupes/less
を実行して、システムを新しいバージョンに置き換えることができます。
私のために働く
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"
私はこれをググって、私のために働いた以下の環境変数を試しました:
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
これをすべてを支配する言語変数だと私に思わせる:)
更新してください[less][1]
醸造でそれを行います。
brew install homebrew/core/less