LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1218|回复: 4

Linux下MAN乱码问题的解决

[复制链接]
发表于 2009-1-11 01:04:58 | 显示全部楼层 |阅读模式
情况是这样的:我在/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文档,系统会为我们选择英文的。
发表于 2009-1-11 06:50:41 | 显示全部楼层
我猜:确实是你locale设置不对。你列一个locale -a出来干嘛,要看你当前的locale。。

Post by imake;1936800
情况是这样的:我在/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文档,系统会为我们选择英文的。
回复 支持 反对

使用道具 举报

发表于 2009-1-11 08:33:55 | 显示全部楼层
最简单的方法,修改 /etc/portage/package.use 加一行 sys-apps/man-pages -linguas_zh_CN
然后重新 emerge -1 man-pages
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-11 15:56:48 | 显示全部楼层
Post by richardpku;1936826
我猜:确实是你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
回复 支持 反对

使用道具 举报

发表于 2009-1-12 15:11:50 | 显示全部楼层
同样问题。留个记号。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表