Next Previous Contents

9. 其它软件的中文相关问题

9.1 Netscape Navigator

有许多网页都讨论这个问题。Netscape (2.0 版以后) 同时支持 BIG5 及 GB 编码。要在 Netscape 下显示中文有三个步骤:

  1. 安装 X 的中文字型。请参考 安装中文字型 一节。
  2. 执行 netscape,将 Document Encoding 设定为 Tranditional Chinese (Big5)Simplified Chinese.
  3. 选择你要使用的中文字型。
或许你会奇怪为何你只能使用 Fixed(HKU) Size 16.0。这是因为 /usr/X11R6/lib/X11/app-defaults/Netscape 的设定。 假设你有下列这些 BIG5 字型
# xlsfonts | grep gb2312
-hku-fixed-medium-r-normal--0-0-72-72-c-0-gb2312.hku-0
-hku-fixed-medium-r-normal--16-160-72-72-c-160-gb2312.hku-0
-kc-kai-medium-r-normal-fantizi-0-0-75-75-c-0-gb2312.eten.3.10-1
-kc-kai-medium-r-normal-fantizi-20-200-75-75-c-200-gb2312.eten.3.10-1
-kc-kai-medium-r-normal-fantizi-24-240-75-75-c-240-gb2312.eten.3.10-1
-kc-ming-medium-r-normal-fantizi-0-0-75-75-c-0-gb2312.eten.3.10-1
-kc-ming-medium-r-normal-fantizi-15-150-75-75-c-160-gb2312.eten.3.10-1
-kc-ming-medium-r-normal-fantizi-24-240-75-75-c-240-gb2312.eten.3.10-1
/usr/X11R6/lib/X11/app-defaults/Netscape 上加一行
*documentFonts.charset*gb2312.eten.3.10-1:              x-x-gb2312
如此 Netscape 就能够使用这些字型了。

另一个解决的方法是为你的字型名称加上别名(alias): 在你的字型目录下的 fonts.alias 文档中加(如果没有这个文档就自己建)

-gb2312-taipeik-medium-r-normal--16-160-72-72-c-160-gb2312.hku-1 taipei16
-gb2312-taipeik-medium-r-normal--20-200-72-72-c-200-gb2312.hku-1 taipeik20
-gb2312-taipeik-medium-r-normal--24-240-72-72-c-240-gb2312.hku-1 taipeik24

其中 taipeik20 等你是要为它取别名的字型名称。修改过要后用

# xset fp rehash
重新载入字型名称才会生效。

你可能会发现在中英文夹杂的网页里中英文字型的比例并不正确(如英文字太小)。这是因为你的选用的英文字型和中文字型大小并不配合的缘故。 回到字型设定中选 Western(iso-8859-1), 然后更改英文字型的大小。调到你认为适当的大小比例即可。

9.2 sendmail

因为 sendmail 8.8.x 预设会将所有 8-bit 的信件编码后再送出,这或多或少会对收信人造成一些影响(参见 下一小节 的解决方法)。 现在大部份的主机都已能直接传送 8-bit 的信件,所以你最好重新编译 sendmail, 将编码功能关掉。

9.3 procmail

procmail 是一个电子邮件过滤器(mail filter). 它可将到的信件在存入你的信箱前先做处理,例如将信件分类等。 不过这里要教你的是如何利用 procmail 来将被编码的中文信件解码成纯文字,以及在不同编码的信件转换为你常用的编码。

在你的 home 目录下建立 .procmailrc 文档,内容如下:


# 在用 procmail 处理前先将信件储存下来,以免发生意外
# 你可以设定哪些信件不必备份,例如由 MAILER-DAEMON 来的退信
:0 c
* !^From.*MAILER-DAEMON
mail/procmail-backup

# 将以 quoted-printable 或 base64 编码的信件解码
:0
* ^Content-Type: *text/plain
{
    :0 fbw
    * ^Content-Transfer-Encoding: *quoted-printable
    | mimencode -u -q

        :0 Afhw
        | formail -I "Content-Transfer-Encoding: 8bit" \
                  -I "X-Mimed-Autoconverted: quoted-printable to 8bit by procmail"

    :0 fbw
    * ^Content-Transfer-Encoding: *base64
    | mimencode -u -b

        :0 Afhw
        | formail -I "Content-Transfer-Encoding: 8bit" \
                  -I "X-Mimed-Autoconverted: base64 to 8bit by procmail"
}

# 这里判断信件是否为 GB 编码,若是则转为 BIG5 编码
# 如果你要由 BIG5 转为 GB 码,要将例子中所有的 gb2312
# 及 gb2312 互换,并将 hc -m b2g 改为 hc -m g2b

:0
* ^Content-Type:.*text/plain;.*charset=gb2312
{
    :0 fw
    | hc -m b2g -t /usr/local/lib/chinese/hc.tab

        :0 Afhw
        | formail -I "Content-Type: text/plain; charset=gb2312" \
                  -I "X-Charset-Autoconverted: gb2312 to gb2312 by procmail"
}

# 将信件存回信箱
:0:
${ORGMAIL}

这个例子中,配合了 mimencode, formail 将信件解码,并用 hc 将 GB 编码的信件转为 BIG5 编码。所以你还必须安装这些工具。

最后再将更改你的 .forward 档就可以了

"|IFS=' ' && exec /usr/bin/procmail -f- ~/.procmailrc ||exit 75 name"
注意: 其中最后的 name 要改为你自己的签入名称(login name).

9.4 telnet

如果你在自己的机器上可以输入中文,但 telnet 到别的机器后却无法输入中文,那么问题可能出在 telnet 程序上。 当你还在 telnet 连线中时可以按 Ctrl-] 跳出,在 telnet> 提示符号下输入 set binary 即可。 你也可以在连线时用 telnet -8. (但是在连某些站台时会出问题...?)

另一个较简单的办法是直接改用可传输 8-bit 的 telnet 程序。从下面地点可取得执行档:

ftp://linux.cis.nctu.edu.tw/packages/chinese/misc/

9.5 less

less 本身就可直接显示中文了,只要设定下面的环境变数即可:

# export LESSCHARSET=latin1

9.6 pine

Pine 3.95 版以后就可以支持阅读及输入中文信件了。进入 pine 之后选 SETUP/Configfeature list 中勾选(按 X):

   [X]  enable-8bit-esmtp-negotiation
   [X]  enable-8bit-nntp-posting

然后在 character-set 上按 C, 将其值改为 gb2312 或 gb2312. 按 E 脱离储存即可。

你也可以安装能显示中文信息的 cpine:

ftp://ftp.vit.edu.tw/unix/linux/chinese/cpine-3.91.bin.tgz

9.7 samba

9.8 lynx

Lynx v2.7 已经可直接接观看中文的网页了。执行 lynx, 按 O)ption / C)haracter set, 按上下键选 Taipei(Big5),再按 '>' 存档即可。

9.9 minicom

启动 minicom 时加上 -l 选项即可显示中文。

9.10 fingerd

如果你在你的 .plan 中使用中文别人却看不到,那可能是因为你的 fingerd 无法送出 8-bit 的中文字。 到下面地点取回 cfingerd:

ftp://nctuccca.edu.tw/OS/Linux/packages/network/finger/cfingerd-1.3.2.tar.gz

解开后,执行 ./Configuremake all 即可。

再来修改 /etc/inetd.conf, 将原来 finger 的项目改为:

finger  stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.cfingerd

最后让 inetd 重新读入设定档:

# kill -HUP `cat /var/run/inetd.pid`

9.11 tintin++

TinTin++ 并非中文软件。它只是在你玩中文 mud 时非常的有用。你可在此取得:

ftp://ftp.princeton.edu/pub/tintin++

下面是一些中文 mud 站:

FengYun                  fengyun.com       5555
Xi You Ji                129.105.79.24     6905
Xia ke Xing              207.76.64.2       5555


Next Previous Contents