Perl Unicode 美食大全:显式编码/解码
℞ 12: 显式编码/解码
虽然标准的Perl Unicode序言使得Perl的文件句柄默认使用UTF-8编码,但文件句柄并不是数据的唯一来源和去处。在少数情况下,例如数据库读取,你可能会得到需要解码的编码文本。
核心的 Encode 模块提供了两个函数来处理这些转换。(记住,decode()
表示将字节从已知编码转换成Perl的内部Unicode形式,而 encode()
表示从Perl的内部形式转换成已知编码。)
use Encode qw(encode decode);
# given $bytes, containing octets in a known encoding
my $chars = decode("shiftjis", $bytes, 1);
# given $chars, a string encoded in Perl's internal format
my $bytes = encode("MIME-Header-ISO_2022_JP", $chars, 1);
对于全部使用同一编码的流,不要使用编码/解码;相反,在打开文件时或随后立即使用 binmode
(如未来参考中所述)设置文件编码。记住Unicode的黄金法则:始终在应用程序的边缘进行编码/解码。
上一页: ℞ 11: CJK代码点的名称
系列索引: 标准序言
下一页: ℞ 13: 将@ARGV解码为UTF-8
标签
反馈
这篇文章有什么问题吗?请通过在 GitHub 上打开问题或拉取请求来帮助我们。