Chinaunix首页 | 论坛 | 博客
  • 博客访问: 525914
  • 博文数量: 126
  • 博客积分: 851
  • 博客等级: 准尉
  • 技术积分: 1287
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-06 11:21
个人简介

个人最新博客地址http://www.skylway.com/

文章分类

全部博文(126)

文章存档

2016年(2)

2014年(60)

2013年(35)

2012年(29)

分类: LINUX

2014-02-25 10:26:36

Perl中文/unicode/utf8/GB2312之间的转换

Perl中文/unicode/utf8/GB2312编码之间的转换是一件很让人头疼的事情,我总结了以下主要的转换方法,供大家了解参考。

  1. # author: jiangyujie  
  2. use utf8;  
  3. use Encode;  
  4. use URI::Escape;  
  5.   
  6. $/ = "/n";  
  7.   
  8. #从unicode得到utf8编码  
  9. $str = '%u6536';  
  10. $str =~ s//%u([0-9a-fA-F]{4})/pack("U",hex($1))/eg;  
  11. $str = encode( "utf8"$str );  
  12. print uc unpack( "H*"$str );  
  13.   
  14. # 从unicode得到gb2312编码  
  15. $str = '%u6536';  
  16. $str =~ s//%u([0-9a-fA-F]{4})/pack("U",hex($1))/eg;  
  17. $str = encode( "gb2312"$str );  
  18. print uc unpack( "H*"$str );  
  19.   
  20. # 从中文得到utf8编码  
  21. $str = "收";  
  22. print uri_escape($str);  
  23.   
  24. # 从utf8编码得到中文  
  25. $utf8_str = uri_escape("收");  
  26. print uri_unescape($str);  
  27.   
  28. # 从中文得到perl unicode  
  29. utf8::decode($str);  
  30. @chars = split //, $str;  
  31. foreach (@chars) {  
  32.     printf "%x ", ord($_);  
  33. }  
  34.   
  35. # 从中文得到标准unicode  
  36. $a = "汉语";  
  37. $a = decode( "utf8"$a );  
  38. map { print "//u", sprintf( "%x"$_ ) } unpack( "U*"$a );  
  39.   
  40. # 从标准unicode得到中文  
  41. $str = '%u6536';  
  42. $str =~ s//%u([0-9a-fA-F]{4})/pack("U",hex($1))/eg;  
  43. $str = encode( "utf8"$str );  
  44. print $str;  
  45.   
  46. # 从perl unicode得到中文  
  47. my $unicode = "/x{505c}/x{8f66}";  
  48. print encode( "utf8"$unicode ); 

阅读(2898) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~