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相当简单.
阅读(611) | 评论(0) | 转发(0) |