【发布时间】:2013-06-17 20:15:01
【问题描述】:
如下:
my $string = "Can you \x{FB01}nd my r\x{E9}sum\x{E9}?\n";
x{FB01} 和 x{E9} 是代码点。并且代码点通过编码方案编码为一系列八位字节。
因此,具有代码点\x{FB01} 的字符è 是$string 字符串的一部分。但这是如何工作的?这句话中的所有字符(包括 ASCII 字符)是否通过UTF-8 编码?
如果是,为什么我会得到以下行为?
my $str = "Some arbitrary string\n";
if(Encode::is_utf8($str)) {
print "YES str IS UTF8!\n";
}
else {
print "NO str IT IS NOT UTF8\n";
}
这打印"NO str IT IS NOT UTF8\n"
另外Encode::is_utf8($string) 返回true。$string 和 $str 有什么不同,一个被认为是 UTF-8 而另一个不是?
无论如何,$str 的编码是什么? ASCII?这是Perl 的默认值吗?
【问题讨论】:
-
Perl 不会将事物保存在编码中。它的字符串总是被解码。只有未解码的字符串可能处于某种编码中。
标签: string perl utf-8 character-encoding