如何使'less'命令处理UTF-8?

如何使'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"

答案1

好的,经过一番谷歌搜索后,我找到了答案。显然,LESSCHARSET需要像这样设置:

export LESSCHARSET=utf-8

现在less对我来说工作正常。

答案2

如果您可以在 中看到一些 unicode 字符less,但无法less显示表情符号,请尝试升级less到较新的版本。在 Mac OS X 上,我从版本 458 升级到 481,这解决了我的问题(例如,git log现在可以在提交消息中显示表情符号)。

如果你有自制软件,你可以通过运行将系统替换为较新版本brew install homebrew/dupes/less

答案3

适合我

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"

答案4

只需更新你[less][1]

用 brew 来做。

brew install homebrew/core/less

相关内容