忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 视频 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 12098 | 回复: 7

求获取汉字unicode具体编码的方法 [复制链接]

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-03-09 06:20:00
发表于 2005-03-20 19:13 |显示全部楼层
我在用perl编一个wml动态网页,需要获取汉字的unicode编码,并整理成形如“&#x5c71”的格式。  

比如“山”字,编码是“&#x5c71”。

我想用perl实现这个功能,在安装了encode模块后,可以把汉字转码为utf8格式,但不能得到需要的编码。

把“山”字转为utf8格式后保存到文件,用ultraedit打开文件,用十六进制模式查看可以看到到文件内容是 71 5c,但怎样用perl直接得到“71 5c”的编码呢?谢谢!


下面的java网页就是实现这样的转码功能,如果上面我说的不清楚,概括地说就是如何用perl实现下面网页提供的查看unicode功能:

http://www.wapschool.com/chinese/tech/tools/onlinetool.shtml

论坛徽章:
0
发表于 2005-03-21 10:45 |显示全部楼层

求获取汉字unicode具体编码的方法

my $c = "我";

print unpack("H*",$c); # 输出 ced2, 此为汉字编码\xcede

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-03-09 06:20:00
发表于 2005-03-21 11:31 |显示全部楼层

求获取汉字unicode具体编码的方法

谢谢

使用 unpack("H*",$c); 的方法我也试了,可结果并不是想要的。

对于汉字“我”,最后需要的是“&#X  6211;”  把“&#X  6211;”  插入网页可以正确显示“我”。  

(&#X和后面16进制编码之间没有空格,为了发贴正常显示我加上了空格)

我试验了一下,“ced2”是汉字“我”的GB2312编码格式。在用encode模块把“我”转为utf8后,再用unpack("H*",$c); 查看编码得到的是“e68891”

“6211;”  和“e68891”是否存在换算的关系呢?我注意到把utf8编码的汉字保存后用ultraedit打开就可以看到需要的"6211" ,为什么用unpack的方法查不到“6211”呢?不明白。

我对汉字编码不是很了解,这个问题已经困惑我两天,查了很多资料也没有进展。

论坛徽章:
0
发表于 2005-03-21 13:32 |显示全部楼层

求获取汉字unicode具体编码的方法

我最近也在学习编码解码,我是这样做的:

  1. use Encode;
  2. $a="我";
  3. $a=decode ("gb2312",$a);
  4. map {print "&#x",sprintf("%x",$_)}unpack ("U*",$a);
复制代码

不知对不对?希望各位高手指点!

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-03-09 06:20:00
发表于 2005-03-21 15:55 |显示全部楼层

求获取汉字unicode具体编码的方法

经过测试结果正确,这正是我需要的。感谢!

我一直在尝试先用from_to($a,"gb2312","utf8",再用unpack解包,可怎么也得不到正确结果。

今天又学了一招

论坛徽章:
0
发表于 2010-04-07 17:06 |显示全部楼层

论坛徽章:
0
发表于 2010-04-07 22:59 |显示全部楼层
回复 3# unix666

我试了一下,可以按照如下方式获得你想要的unicode编码

  1. my $data="我山";
  2. my $bytes = unpack("H*",$data);
  3. print $bytes ."\n";

  4. my $characters = decode('utf8', $data);

  5. foreach my $char (split(//, $characters)) {
  6. printf("%s = %#x\n",encode("utf8",$char), ord($char));
  7. }
  8. [code]

  9. 运行结果:
  10. [code]
  11. e68891e5b1b1
  12. 我 = 0x6211
  13. 山 = 0x5c71
复制代码

论坛徽章:
0
发表于 2010-04-08 20:59 |显示全部楼层
哈哈,跟我的情况很类似阿。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP