[mqm@node01 perl]$ cat a1.pl
#use utf8;
open (LOG ,"<","aa") or die $!;
while (<LOG>){
if ($_ =~/验证/){print "$_
";};
};
[mqm@node01 perl]$ perl a1.pl
这是验证信息
[mqm@node01 perl]$ cat a1.pl
use utf8;
open (LOG ,"<","aa") or die $!;
while (<LOG>){
if ($_ =~/验证/){print "$_
";};
};
[mqm@node01 perl]$ perl a1.pl
[mqm@node01 perl]$
utf8 -- Perl 编译指标来启动/关闭 UTF-8(或者UTF-EBCDIC)在源代码:
use utf8;
no utf8;
转换一个Perl scalar 内部表示 to/from UTF-8
描述:
使用utf8 编译指令告诉 Perl 解析器允许UTF-8 在程序文本在当前的词汇范围。
使用utf8 编译指令告诉Perl 解析
[mqm@node01 perl]$ cat a1.pl
use utf8;
open (LOG ,"<","aa") or die $!;
while (<LOG>){
if ($_ =~/验证/){print "$_
";};
};
[mqm@node01 perl]$ perl a1.pl
[mqm@node01 perl]$
[mqm@node01 perl]$ cat a1.pl
use utf8;
use Encode;
open (LOG ,"<","aa") or die $!;
while (<LOG>){
my $d=encode_utf8('验证');
if ($_ =~/$d/){print "$_
";};
};
[mqm@node01 perl]$ perl a1.pl
这是验证信息
使用utf8编译 告诉Perl 解释器来允许UTF-8 在程序文件在当前的词汇范围。
no utf8 标注 告诉Perl 切换回对待 source text 作为文字字节在当前的文本范围
不要使用注释对于任何其他除了告诉Perl 你的脚本是用UTF-8写的。
因为 它不可能可靠的告诉UTF-8 从本地的8位编码,你需要 一个字节顺序标记 在你的源代码开头,或者
use utf8 来指导perl
当UTF-8 变的标准源格式,这个指令将会有效变成一个空操作
启用utf8 语法有下面的作用:
字节在source 文本 不是以ASCII 码字符集 会对待为一个原UTF-8序列的一部分。
注意 如果你没有ASCII,no-UTF-8 字节在你的脚本,使用utf8 会不高兴。
功能函数:
下面的 函数是定义在 utf8:: package 通过Perl 核心包。
你不需要say use utf8 来使用那些,实际上 你不应该说 除非你需要UTF-8 源代码。
$num_octets = utf8::upgrade($string)
(因为Perl v5.8.0)转换代替内部的 字符串表示从一个8位字节的顺序在内部编码(Latin-1 or EBCDIC) to UTF-8.
逻辑的字符串顺序本身是可以改变的,如果 $string 是以为存储为一个utf-8
逻辑的字符顺序本身是不可改变的,如果$string 是已经存储为UTF-8,然后是一个空字符串。
返回8位字节的数值来表示一个字符串为UTF-8。
注意 这个函数不能处理任意编码, use Encode instead.
$success = utf8::downgrade($string[, $fail_ok])
(自从Perl v5.8.0)转换代替 内部的字符串陈述从UTF-8 到相等的8位字节顺序在本地编码
逻辑 字符顺序本身是不能改变的,如果 $string 是已经存储为native 8 bit,然后这是一个非空操作。
注意,这个参数不处理任意的编码,use Encode instead.
utf8::encode($string)
(因为Perl v5.8)将转换替换 字符顺醋到相应的8位字节在UTF-8。
也就是说,每个(可能的宽)字符 得到替换一个或者多个字符的顺序 表示 单个UTF-8 bytes of the character.
UTF8 flag 是被关闭的,没有返回