[PerlChina] 如何用正则确定变量的内容是utf8还是gb2312的?

silent silent2600 at gmail.com
Wed Nov 26 23:56:15 PST 2008


恩,谢谢了.

Felix New 写道:
> 有些编码, 在两个函数中都为真的情况.比如:
>
> |> sub is_utf8 {
> |> my $r = shift;
> |> return 1 if ($$r
> |> =~/[\x01-\x7f]|[\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|
> [\xf0-\xff][\x80-\xbf]{3}/);
>
>  如果这儿,有个字的编码是[\xf0-\xff][\x80-\xbf]{3},更具体,比如是\xf0\xb1\xb1\xb1,上面红色部分匹配这个编码.那下面的gbk判断函数中的与此同时也匹配这个编码.
> |> return 0;
> |> }
>
> |> sub is_gbk {
> |>     my $r = shift;
> |>     return 1 if ($$r=~/[\xb0-\xf7][\xa0-\xfe]/);
>        \xf0\xb1\xb1\xb1,上行的正则也匹配这个编码中的部分.
> |>     return 0;
> |> }
>
> 那,最后\xf0\xb1\xb1\xb1这个编码是gbk还是utf8?这就不准确了.
>
>   



More information about the China-pm mailing list