Perl字符串编码utf 8

时间:2013-06-20 14:01:05

标签: string perl utf-8 encode

我正在阅读Perl的Encode和utf8。

医生说:

  

$ octets = encode_utf8($ string);

     

相当于

     

$ octets = encode(“utf8”,$ string)。

     

$ string中的字符以Perl的内部格式编码,和   结果以八位字节序列的形式返回。

我不知道这意味着什么。 Perl中的字符串不是八位字节序列(即字节)吗?

那么有什么区别:

$string$octets

1 个答案:

答案 0 :(得分:4)

不,Perl中的字符串是一系列字符,不一定是八位字节。 chrord函数(用于在整数和单个字符之间进行转换),名称为2,可以处理大于255的整数值。例如

$string = "\x{0421}\x{041F}";
print ord($_)," " for split //, $string;

输出

1057 1055

当一个字符串被写入终端,文件或其他输出流时,接收该字符串的设备通常需要并且需要字节,但是,这就是编码的来源。正如您所见,UTF-8是一个用于将0x7F-0x10FFFF范围内的单个值编码为多个字节的方案。

$octets = Encode::encode("utf-8", "\x{0421}\x{041F}");
print ord($_)," " for split //, $octets;

现在输出

208 161 208 159

并且适合存储在文件系统中。

在内部,perl(在所有小写字母中,这指的是Perl的可执行实现,编程语言规范)通常使用UTF-8来表示具有“宽”字符的字符串,但这不是你的意思每个人通常都要担心。