我正在尝试使用 FreeBSD 正确显示国家字符男人。我尝试在 8.1 和 9.0 上运行以下命令:
# PAGER=less LANG="pl_PL.UTF-8" man -d -M. ./man.1
-- Using architecture: i386:i386
-- Using pager: less
-- Using manual sections: 1:1aout:8:2:3:n:4:5:6:7:9:l
-- Using locale paths: pl_PL.UTF-8:pl.UTF-8:en.UTF-8:.
-- Using standard page width
-- Searching for ./man.1
-- Found a usable page, displaying that
-- Command: /usr/bin/zcat -f ./man.1 | tbl | groff -S -P-h -Wall -mtty-char -man -Tascii -P-c | less
但它打印:
程序人笑话系统owA przeglAdarkA stron podrAcznika ekranowego.KaA1/4dy 论点...
相同的联机帮助页可以在 Linux 主机上正确显示:
程序人开玩笑系统, przeglądarką stron podręcznika ekranowego。卡兹迪的论点...
一位知识渊博的人告诉我 9.0 的联机帮助页被认为是才能正确显示。我缺少什么?
答案1
我认为您缺少LESSCHARSET=utf-8
在您的环境中拥有的东西。至少在我的 FreeBSD 主机上使用此设置允许我以正确的方式查看手册页。
答案2
的论点-Tascii
看起来groff
很可疑。
经过进一步调查,似乎man
根据 MANPATH 中找到手册页的位置来设置此参数。
例如,在我的系统上,-Tutf8
每当调试输出显示时就使用
Found manpage /usr/share/man/en.UTF-8/man1/...
但-Tascii
在显示时使用
Found manpage /usr/share/man/man1/...
在这种情况下,我认为问题是man
在手册页的路径中看不到任何区域设置名称,因此它默认为 ASCII/C 区域设置。
作为解决方法,请尝试以下操作:
mkdir -p pl.UTF-8/man1
cp man.1 pl.UTF-8/man
man -d -M. man