我正在阅读Perl的Encode
和utf8。
医生说:
$ octets = encode_utf8($ string);
相当于
$ octets = encode(“utf8”,$ string)。
$ string中的字符以Perl的内部格式编码,和 结果以八位字节序列的形式返回。
我不知道这意味着什么。 Perl中的字符串不是八位字节序列(即字节)吗?
那么有什么区别:
$string
和$octets
?
答案 0 :(得分:4)
不,Perl中的字符串是一系列字符,不一定是八位字节。 chr
和ord
函数(用于在整数和单个字符之间进行转换),名称为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来表示具有“宽”字符的字符串,但这不是你的意思每个人通常都要担心。