在我的Macterminal上,打印UTF-8的工作原理一般,但less
不能正常工作。
所以这工作正常:
$ echo -e '\xe2\x82\xac' €
但是把它变成更小的东西就是这样的:
$ echo -e '\xe2\x82\xac' | less <E2><82><AC>
这怎么解决?
诊断:
我正在使用Mac OS 10.6.8。 less版本418,terminal2.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"
好的,我在googlesearch后find了答案。 显然, LESSCHARSET
需要像这样设置:
export LESSCHARSET=utf-8
现在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"
我GOOGLE了这一点,并尝试了以下环境variables为我工作:
export LC_ALL=en_US.UTF-8 export LANG=en_us.UTF-8
看到我在多个不同的答案findLC_ALL我认为这是正确的。 但也许不是唯一正确的答案,当然这个问题当然可以有更正确的答案。
无论如何,一些更多的使用googling给了我这个variables的描述:
LC_ALL此variables确定所有语言环境类别的值。 LC_ALL环境variables的值优先于以LC_(LC_COLLATE,LC_CTYPE,LC_MESSAGES,LC_MONETARY,LC_NUMERIC,LC_TIME)和LANG环境variables开头的任何其他环境variables。
来源: http : //pubs.opengroup.org/onlinepubs/007908799/xbd/envvar.html
引导我认为这是语言variables来统治他们所有:)