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 上打开问题或拉取请求来帮助我们。