繁简转换问题!
2004-11-26 14:25
519 查看
http://www.waynedeng.com/blog/showlog.asp?cat_id=25&log_id=481
公司的网站需要提供三种语言:英、繁体中文和简体中文。英文和中文区别好办,语言相差太大,只能存放在两个数据fields中。但是繁体和简体一般都是只存一个,然后通过一个程序自动转换。
以前一直都用Kanhan(http://www.kanhan.com/)自动转换的,kanhan需要一台专用的服务器,例如translate.bciasia.com,然后看繁体的网站(big5编码)就是translate.bciasia.com/b5/www.bciasia.com,相当于一个转译的代理中介。感觉这种方式不太好,一般的形式都是www.bciasia.com/b5。例如IBM的网站架构就是www.ibm.com/cn、www.ibm.com/tw……
现在想要自己做一个繁简转换的程序,一研究起来,感觉真的不简单。难怪Kanhan能上市啊!
首先第一个问题就是内码转换,简体一般是gb内码,转成big5的内码就问题多多,一般都是通过一个转换对照表来转换,有些汉字转换过去就是一个问号!
下面是一个比较简单的转换方法。
有些内码转换的程序做的比较好,比如有一个GBToBigOCX控件(
big2gb2.zip)。,基本上都可以转换,但是下面的问题还是不能解决。
繁简汉字之间往往不能一一对应!这是一个致命的问题。
例如:瞭解 -> 了解 瞭望 -> 瞭望;“標準”繁換簡是“标准”,但“标准”簡換繁卻是“標准”……
还有若干语言习惯的问题,例如同一个地名的称呼就不一样,就不一一列举了。
解决这个问题的方法一般是建立一个词库,单独列出一一转换。
当然还是有许多软件做的挺不错的,例如上面提到的Kanhan还有就是Microsoft的word。Word里面就有个繁简转换的功能,想到这里我就设想是否能利用word来进行转换呢?
其实做起来也很简单:
Word中的繁简转换也是可以定义词组的,而且考虑了港澳台的习惯,可以说转译的效果还不错。但是翻译的速度挺慢的,而且随后发现了一个问题——它不进行内码转换,也就是说转换的结果是所谓的假繁体,似乎是zh-chs to zh-cht? 至于什么是zh-chs和zh-cht不大清楚,只是在IE中编码必须设定为GB。不知道在繁体的word中是否内码就是Big5,这个需要尝试一下了。
最后没有办法,还是只能用Kanhan了,实在不行用XMLHTTP访问translate.bciasia.com/b5/www.bciasia.com再在cfm中输出结果。呵呵,最后的杀手锏!
参考文献:
1、http://community.csdn.net/Expert/topic/3458/3458436.xml?temp=.8015863
2、http://zh.wikipedia.org/wiki/Wikipedia_talk:%E7%B9%81%E7%AE%80%E4%BD%93%E9%97%AE%E9%A2%98
3、http://www.cnblogs.com/snowwolf/articles/2735.html
4、http://www.china-askpro.com/msg14/qa45.shtml
公司的网站需要提供三种语言:英、繁体中文和简体中文。英文和中文区别好办,语言相差太大,只能存放在两个数据fields中。但是繁体和简体一般都是只存一个,然后通过一个程序自动转换。
以前一直都用Kanhan(http://www.kanhan.com/)自动转换的,kanhan需要一台专用的服务器,例如translate.bciasia.com,然后看繁体的网站(big5编码)就是translate.bciasia.com/b5/www.bciasia.com,相当于一个转译的代理中介。感觉这种方式不太好,一般的形式都是www.bciasia.com/b5。例如IBM的网站架构就是www.ibm.com/cn、www.ibm.com/tw……
现在想要自己做一个繁简转换的程序,一研究起来,感觉真的不简单。难怪Kanhan能上市啊!
首先第一个问题就是内码转换,简体一般是gb内码,转成big5的内码就问题多多,一般都是通过一个转换对照表来转换,有些汉字转换过去就是一个问号!
下面是一个比较简单的转换方法。
以下是代码片段: '****** 简繁体互换 GB-->BIG5 Or BIG5-->GB ***************** '参数sStr为需要转换的文本 '参数iConver为要转化的类型,为1时表示繁体到简体的转换,为2时表示简体到繁体的转换 Function GBBIG5(sStr As String, iConver As Integer) As String On Error Resume Next Dim STR If iConver = 1 Then 'BIG5-->GB STR = StrConv(sStr, vbFromUnicode, &H804) GBBIG5 = StrConv(STR, vbUnicode, &H404) ElseIf iConver = 2 Then 'GB-->BIG5 STR = StrConv(sStr, vbFromUnicode, &H404) GBBIG5 = StrConv(STR, vbUnicode, &H804) End If End Function |
big2gb2.zip)。,基本上都可以转换,但是下面的问题还是不能解决。
繁简汉字之间往往不能一一对应!这是一个致命的问题。
例如:瞭解 -> 了解 瞭望 -> 瞭望;“標準”繁換簡是“标准”,但“标准”簡換繁卻是“標准”……
还有若干语言习惯的问题,例如同一个地名的称呼就不一样,就不一一列举了。
解决这个问题的方法一般是建立一个词库,单独列出一一转换。
当然还是有许多软件做的挺不错的,例如上面提到的Kanhan还有就是Microsoft的word。Word里面就有个繁简转换的功能,想到这里我就设想是否能利用word来进行转换呢?
其实做起来也很简单:
以下是代码片段: Dim w As New Word.Document Function Convert(ByVal s) As String With w.Content .Text = s .TCSCConverter WdTCSCConverterDirection:= _ wdTCSCConverterDirectionSCTC, CommonTerms:=True, UseVariants:=True Convert = .Text End With End Function |
最后没有办法,还是只能用Kanhan了,实在不行用XMLHTTP访问translate.bciasia.com/b5/www.bciasia.com再在cfm中输出结果。呵呵,最后的杀手锏!
参考文献:
1、http://community.csdn.net/Expert/topic/3458/3458436.xml?temp=.8015863
2、http://zh.wikipedia.org/wiki/Wikipedia_talk:%E7%B9%81%E7%AE%80%E4%BD%93%E9%97%AE%E9%A2%98
3、http://www.cnblogs.com/snowwolf/articles/2735.html
4、http://www.china-askpro.com/msg14/qa45.shtml
相关文章推荐
- 在DB2 中创建一个获取汉字拼音首字母的SQL 函数
- JavaScript写打开窗口
- 扫描技术概论
- 请问Tornado下一些命令行程序如何使用?
- Wind River的编码习惯!
- 一个PCI配置空间的问题 vxWorks
- 利用ASP+XML自动生成静态HTM
- ULIP及vxsim网络仿真的实现
- 刘美君 - 这么那么怎么
- 都是缓存惹得祸 (转至http://blog.csdn.net/kwklover/)
- (eclipse版)Struts环境配置手册
- 个人基本资料
- 用PHP开始你的MVC (四)实现View层
- “专家”!
- Sharepoint 的定制 - I
- 用PHP开始你的MVC(三)实现你的Model层
- COM与注册表(COM笔记)
- 用PHP开始你的MVC (二)抽象数据库接口
- sun要在自己的IDE里加入UML了
- 用PHP开始你的MVC (一)整合你的站点入口