LinuxSir.cn,穿越时空的Linuxsir!

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

我爱用的Debian小工具(连载) 二、简繁中文随心换

[复制链接]
发表于 2003-12-28 02:06:40 | 显示全部楼层 |阅读模式
  我爱用的Debian小工具(连载)


  第二集、 简繁中文随心换 ── hztty与zh-autoconvert

  尽管GBK/GB18030已经包含了大部分繁体字符,Unicode也越来越流行,但传统的GB/Big5编码依然是绝大多数系统及软件的缺省设置。如此一来,简繁转换就变成了很多中文用户都要面对的问题。

  我把简繁转换这个任务分成了两种类型:
  一、静态转换,即对文件或标准输入输出进行操作;
  二、动态转换,即在以普通中文输入法时,进行即时转换,例如,用fcitx进行输入,但得到的是Big5码繁体。

  今天要讲的两个工具都是由国内的Debian维护者于广辉先生编写的软件。

  对第一种类型,咱们使用提智能转换工具zh-autoconvert,操作的命令有两个autogb/autob5。该软件能通过对常用词语的比较来实现自动判断文件的类型,这比那些需要手动指定输入输出编码的软件要方便很多,如果文章有一定的长度(比如1000字),识别准确度将达到100%。可以用该软件deb包中附带的几个不同编码的文本(内容是《射雕英雄传》第一章)进行一下验证。
  举例说明:
  zh-autoconvert是直接对stdin/stdout进行操作,最简单的使用方法就是在终端中运行autogb,然后输入简体中文,然后按Ctrl+D,标准输出上就会出现一堆乱码,实际上就是您所输入的内容的Big5繁体版,反之亦可。
  如果想将一未知编码(非UTF-8)的文件转换为简体GB文档,命令是autogb < in.txt > out.txt;若要获得繁体Big5文档,则是autob5 < in.txt > out.txt
  因为UTF-8文档中可能同时包含简繁,甚至XX语字符,因此自动判断功能不太适用。
  假如已知待处理的中文文档是UTF-8编码,则可以使用"-i utf8"参数,例如autogb -i utf8 < in.txt > out.txt,繁体类推。
  以上只是zh-autoconvert最简单的使用方法,实际上zh-autoconvert可支持在大部分中文编码之间任意转换,包括gb, big5, hz, unicode, utf7 和 utf8。因此,在整理一些老旧文档时,也会特别有用。但如果你的文档内同时存在几种不同编码,那zh-autoconvert也帮不上你了。
  在Debian mailing list上有一个很成功的应用此软件的例子。Debian中文邮件列表为了方便不同的用户,被分拆成两个版本debian-chinese-gb和debian-chinese-big5,而为了整合资源避免重复劳动又需要这两个邮件列表之间能互通。即一封发给debian-chinese-gb的邮件,在两个列表中都可以收到,而且不会因为编码不同而出现乱码。其实这就是将zh-autoconvert应用到邮件列表服务软件中,自动将任意一个列表收到的邮件转成另一种编码码并存到对方列表中,是不是很简单呢?如果你已经安装了zh-autoconvert,看看软件文档,里面就有这个例子的详细说明。(可惜咱们的Debian中文邮件列表已经停止工作大半年了,原因不明)。

  看过第一种类型的说明,大家可能会说,这软件有什么稀奇的。但第二类型就不一样了。
  试想一下,如果你想在GB简体中文环境系统中登录到繁体中文IRC上去跟台湾香港的朋友实时聊天,麻烦就比较大了。例如fcitx,就只能输入GB码中文,在别人看来就全是天书了。怎么办?嘿嘿,hztty这时就可以派上用场了。
  (我对字符界面的irc程序不熟,以前曾经在bitchx和irssi上成功的试验过,但很多操作都不记得了,因此在这里拿vim来代替。)
  在中文终端下执行hztty -I gb2big -O big2gb vim,然后在vim中输入任意中文字符。咦?没变化嘛,别急,先存盘再说。再直接打开刚刚保存的文件,哈哈,看到一堆乱码了吧,成功!也就是说在屏幕依然显示简体的情况下,vim实际处理的已经是Big5繁体了。
  是不是有点晕,去看看hztty的文档。另外,它跟zh-autoconvert一样,能即时处理的编码也相当多的。
  Debian中还有个叫yiyantang(一言堂)的软件也是类似的功能,我试了一下,但没成功,不如hztty好用。


  请各位多多尝试使用不同的工具组合,说不定你还能找到更实用的功能哟。
 楼主| 发表于 2003-12-28 02:09:17 | 显示全部楼层
不如第一集精彩,呵呵
发表于 2003-12-28 04:28:57 | 显示全部楼层
最初由 carlos 发表
不如第一集精彩,呵呵


当然精彩,可惜我不想用中文系统,转换大法对我没用。。。哈哈。
坚持呀兄弟,我每天都来看看你,sarge_ma和其它兄弟的心得篇呢。
发表于 2003-12-28 08:42:42 | 显示全部楼层
不错,不错,前两天我还转了几个文件,用iconv转的,老是有些东西不对
发表于 2003-12-28 09:34:04 | 显示全部楼层
很实用的。可惜现在太忙了,没有时间实验,现收藏哦。
发表于 2003-12-28 10:12:33 | 显示全部楼层
精彩。已收藏!!
 楼主| 发表于 2003-12-28 12:38:39 | 显示全部楼层
最初由 libinary 发表
不错,不错,前两天我还转了几个文件,用iconv转的,老是有些东西不对


iconv可以用于在各编码间转换,但不足以应付简繁转换。
从Big5繁体转换到GBK/GB18030繁体还行,要想把所有繁体字都转成简体字(即GB2312),出错几率相当高。
发表于 2003-12-28 22:09:19 | 显示全部楼层
收藏!
发表于 2003-12-30 10:40:10 | 显示全部楼层

我来说一句,呵呵。

如果要把 gb 码的转换成 utf-8 码,要 -o utf8 这个选项:

autogb -o utf8 < source_file.txt > destination_file.txt
发表于 2007-6-24 18:09:59 | 显示全部楼层
那如果我的文件里简繁并存,要如何转换到UTF8编码?

sorry, 把这么老的帖子给顶上来了
回复 支持 反对

使用道具 举报

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

本版积分规则

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