Chinaunix首页 | 论坛 | 博客
  • 博客访问: 304846
  • 博文数量: 174
  • 博客积分: 3061
  • 博客等级: 中校
  • 技术积分: 1740
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-04 22:43
文章分类

全部博文(174)

文章存档

2011年(54)

2010年(14)

2009年(30)

2008年(26)

2007年(27)

2006年(23)

我的朋友

分类: WINDOWS

2007-06-07 16:18:13

use encoding "utf-8" ....
 
当使用了encoding package那么情况就有了些变化,按照CPAN的说法.
 
  • Internally converts all literals (q//,qq//,qr//,qw///, qx//) from the encoding specified to utf8. In Perl 5.8.1 and later, literals in tr/// and DATA pseudo-filehandle are also converted.
  • Changing PerlIO layers of STDIN and STDOUT to the encoding specified.

意思就是不管你指定什么格式,你的字符串将被转换为UTF-8,实际上是UNICODE。

另外IO 将类似于 open STDIN , ":yourencoding" 方式.

这种对于io的修改,仅仅相当于于修改了读写模式,但是我到现在不理解这个到底发生了什么,因为从我运行的例子来看,use encoding 只用之后,只是将文本统一转化成了内部的unicode格式. 如果不使用encoding那么将默认以流格式存储.
 
另外如果你制定了encoding那么在程序中直接指定的常量,还是跟随文本保存形式的
$val = "中国"; 如果源码以utf-8存储,你硬是要指定成 use encoding "cp936" 那么将导致编码错误.
同样从读取的也一样,还是要遵守原有的格式.
 
简单来说如果你想使用 use encoding "cp936" ,那么将你的pl文件保存成 cp936编码的.
另外确保读取IO得时候也是这种格式. 这种方式对于以前开发得仅仅工作在co936得系统上得pl porting相当简单.
 
 
阅读(578) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~