使用 cconv 转换简体中文和繁体中文

书写文档时有时需要做简体中文(zh-CN)和繁体中文(zh-TW,zh-HK)之间的转换,iconv 只能实现编码的转换,但不能实现简繁中文词汇的转换,比如:

1、本来不同意义的文字在简体中文里被合为同一个字,如“發獎金、頭髮”当中的“发”,“後天、皇后“当中的“后”。
2、外来的专业术语对应的简繁翻译不同,在计算机领域这类词汇特别多,比如简体的“网络、服务器、鼠标”,在繁体里是“网路、伺服器、滑鼠“。

为了比较准确地完成简体和繁体之间的转换,可以使用带词汇识别的转换程序 cconv。在有些 Linux 发行版的官方源里就有 cconv 了,如果没有的话则先下载源码,得到一个类似 “cconv-0.6.2.tar.gz” 这样的压缩包。然后就可以开始编译和安装了:

$ tar -xzvf cconv-0.6.2.tar.gz
$ cd cconv-0.6.2
$ ./configure --prefix=/usr/local
$ make
$ sudo make install

测试一下:

$ echo "美发现号航天飞机, 上头发奖金,头发应该剪了,后天,皇后"|cconv -f utf-8 -t utf8-tw

没问题的话应该输出:“美發現號航天飛機, 上頭發獎金;頭髮應該剪了,後天,皇后 ”

cconv 可以使用 -f 参数指定待转换的编码名称,-t 参数指定输出的编码名称,可以使用 -l 参数察看程序支持的编码名称列表。

cconv 也可以对一个文件进行转换,如:

$ cconv -f utf-8 -t utf8-tw SOURCE.htm -o TARGET.htm

如果待转换的文档很多,则最好写一个脚本实现批量转换,下面的示例用于将当前目录下的“htm”和“xml”文档从简体中文转换到繁体中文:

#!/bin/bash
find . -type f ( -name "*.htm" -o -name "*.txt" )|while read line;do
echo $line
cconv -f utf-8 -t utf8-tw $line -o ${line}.zh_TW
mv $line ${line}.zh_CN
mv ${line}.zh_TW $line
done
find . -type f -name "*.zh_CN" -exec rm -f {} ;

你可能感兴趣的:(使用 cconv 转换简体中文和繁体中文)