+ -
当前位置:首页 → 问答吧 → Linux下MAN乱码问题的解决

Linux下MAN乱码问题的解决

时间:2009-01-11

来源:互联网

情况是这样的:我在/etc/make.conf中加了LINGUAS="zh_CN en" 在USE里加了unicode,然后在我一次升级系统后,man就变成乱码了……
我发现是系统为我emerge了一个叫做app-i18n/man-pages-zh_CN的包造成的。
在网上查了几天都没结果,后来看了gentoo的本地化手册,说是要在/etc/man.conf里该一行数据,把NROFF /usr/bin/nroff -Tascii -c -mandoc改成NROFF /usr/bin/nroff -mandoc -c,我改了,结果还是没效果,也就没管了,今天我在终端输入man page看到结果提示:Cannot open the message catalog "man" for locale "zh_CN.UTF-8"
(NLSPATH="<none>")
在网上搜了下,有人说是locale没设置正确,我又输入locale -a看了下,结果如下:
C
en_US
en_US.iso88591
en_US.utf8
POSIX
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8
完全没错啊……
后来不知道在哪里看到一篇帖子,说是groff的问题。
于是按照它的提示,我先emerge了一个叫做groff-utf8的包,然后修改/usr/bin/nroff文件。
这是个shell脚本,用nano打开就行了,在最后几行里找到PATH="$GROFF_RUNTIME$PATH" groff -mtty-char $T $opts ${1+"$@"}
把其中的groff改为groff-utf8就行了!
如果你还不行,提示:/usr/bin/groff-utf8: unsupported device 'ascii'
那就是你的/etc/man.conf没有修改,把NROFF /usr/bin/nroff -Tascii -c -mandoc改成NROFF /usr/bin/nroff -mandoc -c。在看看,应该就好了。又中文的man文档就会优先选择中文的,如果没有中文的man文档,系统会为我们选择英文的。

作者: imake   发布时间: 2009-01-11

我猜:确实是你locale设置不对。你列一个locale -a出来干嘛,要看你当前的locale。。

引用:
作者: imake
情况是这样的:我在/etc/make.conf中加了LINGUAS="zh_CN en" 在USE里加了unicode,然后在我一次升级系统后,man就变成乱码了……
我发现是系统为我emerge了一个叫做app-i18n/man-pages-zh_CN的包造成的。
在网上查了几天都没结果,后来看了gentoo的本地化手册,说是要在/etc/man.conf里该一行数据,把NROFF /usr/bin/nroff -Tascii -c -mandoc改成NROFF /usr/bin/nroff -mandoc -c,我改了,结果还是没效果,也就没管了,今天我在终端输入man page看到结果提示:Cannot open the message catalog "man" for locale "zh_CN.UTF-8"
(NLSPATH="<none>")
在网上搜了下,有人说是locale没设置正确,我又输入locale -a看了下,结果如下:
C
en_US
en_US.iso88591
en_US.utf8
POSIX
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8
完全没错啊……
后来不知道在哪里看到一篇帖子,说是groff的问题。
于是按照它的提示,我先emerge了一个叫做groff-utf8的包,然后修改/usr/bin/nroff文件。
这是个shell脚本,用nano打开就行了,在最后几行里找到PATH="$GROFF_RUNTIME$PATH" groff -mtty-char $T $opts ${1+"$@"}
把其中的groff改为groff-utf8就行了!
如果你还不行,提示:/usr/bin/groff-utf8: unsupported device 'ascii'
那就是你的/etc/man.conf没有修改,把NROFF /usr/bin/nroff -Tascii -c -mandoc改成NROFF /usr/bin/nroff -mandoc -c。在看看,应该就好了。又中文的man文档就会优先选择中文的,如果没有中文的man文档,系统会为我们选择英文的。

作者: richardpku   发布时间: 2009-01-11

最简单的方法,修改 /etc/portage/package.use 加一行 sys-apps/man-pages -linguas_zh_CN
然后重新 emerge -1 man-pages

作者: wd_afei   发布时间: 2009-01-11

引用:
作者: richardpku
我猜:确实是你locale设置不对。你列一个locale -a出来干嘛,要看你当前的locale。。
$locale
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8

作者: imake   发布时间: 2009-01-11

同样问题。留个记号。

作者: htcool86   发布时间: 2009-01-12