`less`不能显示特殊字符

我在一些手册中偶然发现了一些不好的特殊字符:

如果您的terminal是“真实的”自动保证金terminal(它不允许<80> <99>允许在不滚动屏幕的情况下更新屏幕上的最后位置)考虑使用您的terminal的一个版本<80> 99> termcap有自动页边距closures。 这将确保在任何情况下都能准确无误地更新屏幕。 现在大多数terminal具有“魔术”边界(自动边界加最后一列可用)。 这是VT100的风格types,非常适合屏幕。 如果所有的你都得到了,

我做了一些研究。 man使用$pager作为它的显示工具,在我的环境中设置的less 。 所以显然less是不能显示手册页的特殊字符。

我的terminal(putty)设置为Utf-8, $LANG=en_US.UTF-8 。 什么可能是错的?

如果您设置了LESSCHARSET环境variables,请首先查看。

 echo $LESSCHARSET 

如果那已经不是utf-8了,那就设置它:

 export LESSCHARSET="utf-8" 

看看是否有帮助。 你也可以尝试一个叫做“ most的寻呼机,它至less在Debian / Ubuntu软件包存储库上是可用的。

尝试另一个寻呼机(如most )。

 PAGER=most man command_name 

要么

 man -P most command_name 

要么

 man --pager=most command_name 

看它是否可以正确显示撇号。

可能是man页的源文件(如果有)是坏的,处理man页( *roff )的工具不正确地处理字符,或者这些工具创build的目标文件( cat文件)可能不正确。 在某些系统上,可以重新生成man页对象文件。

用这些选项之一( -W--where-cat --location-cat--location-cat )运行man来查看cat文件的位置。 尝试重命名(而不是删除 – 所以你可以把它放回去) cat文件,所以一个新的生成。

你可以尝试指定编码,看看是否有帮助。 例如,试试UTF-8UTF-16

 man -E UTF-8 command_name 

要么

 man --encoding=UTF-8 command_name 

最后,运行mandb来检查caching的一致性。