Chinaunix首页 | 论坛 | 博客
  • 博客访问: 430025
  • 博文数量: 101
  • 博客积分: 1547
  • 博客等级: 上尉
  • 技术积分: 1072
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-12 23:46
个人简介

music,code,dialog,rest

文章分类

全部博文(101)

文章存档

2023年(8)

2022年(25)

2021年(6)

2020年(2)

2019年(6)

2018年(4)

2017年(5)

2016年(20)

2015年(4)

2014年(2)

2013年(1)

2012年(1)

2011年(1)

2010年(1)

2009年(2)

2007年(10)

2006年(3)

分类:

2006-04-10 13:31:57

有关适用于Perl5.7以前版本的UCS2到GBK内码互换解决方案
 
尽管Perl 5.8 已经Encode实现了不同内码的显示和转换,但是现在遇到初始安装5.6.1的系统还是很多。于是,想到如果能在Perl5.6.1就支持UCS2到GBK内码的互换就很方便了。到CPAN上下载Encode2.14模块,安装,说需要 至少需要Perl5。7,才能支持。查了一下网上,没有类似信息。于是只有自己动手解决了。
 
参考网上流行的PHP的解决方法, 研究了两天终于完成了。
 
具体思路是:
   利用unicode.org的gb2312.txt 文件,得到unicode和gb2312内码之间的映射关系。这样我们就可根据unicode内码找出gb2312的内码。由于GBK是GB2312的扩展,所以,很快我们就可以换算得到GBK内码。同理,我们也可以根据GBK内码得到Unicode内码。
   不过在由于Perl在内部遇到Unicode的字符,是以UTF8的内码表示的。所以还要经过UTF8专到UCS2,才能利用上面提到的文件进行内码的转换。UTF8和UCS2之间的关系,在此就不再多叙述,网上已经有很多相关的文章。
 

#!/usr/bin/perl -w

use strict;
use lib "./";
use HanConvert;

my $utf="a你好中国";
$utf=utf2ucs($utf);
my $gbkstr=ucs2gbk($utf);
print $gbkstr;

 
 
类似,我们也可以根据gb2312.txt,从GB2312码得到Unicode内码。在此就不再敖述。
sub gbk2utf{
   ...
}
 
不过在目前的模块中,还没有实现该功能。
注意:这个程序可在以System Default Charset为GBK的窗口中显示中文。一个小技巧是,用SecureCRT访问任何UNIX主机,该例程均可以在SecureCRT窗口中,正确显示中文。测试通过的有RedHat 7.3, solaris 8/9 sparc.
该模块的安装方法,直接释放到安装perl的site/lib下面即可!
 
文件: HanConvert.zip
大小: 43KB
下载: 下载
 
阅读(3579) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-08-01 09:46:23

SAP99,支持下,也欢迎访问我的博客, SAP资料多多 http://sap99.cublog.cn http://www.sap99.com SAP实施顾问宝典 :http://www.sap99.com/Soft/VIP/200803/182.html