如何向perl声明iso-8859-1 charset?

时间:2014-02-05 08:42:35

标签: perl encoding

我的字符集是'iso-8859-1'。我不在乎它是否坏,但我必须这样使用它。

如何声明我的perl源代码是用iso-8859-1而不是utf-8编码的?

#! /urs/bin/perl
# encoding of this document is iso-8859-1
# well how to make it understood by perl?

感谢您的帮助和时间。

2 个答案:

答案 0 :(得分:4)

Perl默认采用Latin-1(ISO-8859-1)。您可以在不指定任何编码的情况下使用该脚本。

但是,您应该真正开始使用UTF-8。任何值得它的编辑器都能够处理UTF-8(即使是notepad.exe也可以!),任何合理的工具都会将文件内容视为不透明的字节,而不是7位ASCII(假设已被你的使用破坏)拉丁语-1)。

如果您只需要与Latin-1中编码的资源进行交互,则无需使用此编码编写脚本。使用Encode模块手动编码/解码,或将编码图层添加到文件句柄:open my $fh "<:encoding(NAME)", $resourcebinmode $fh, ":encoding(NAME)"

答案 1 :(得分:0)

Perl Strings可用于保存文本字符串或二进制数据。给定一个字符串,您通常无法找出它是否包含文本或二进制数据 - 您必须自己跟踪它。

与环境的交互(如从STDIN或文件读取数据,或打印它)将字符串视为二进制数据。对于许多内置函数(如gethostbyname)的返回值和将信息传递给程序的特殊变量(%ENV和@ARGV)也是如此。

处理文本的其他内置函数(如uc和lc以及正则表达式)将字符串视为文本,或者更准确地将其视为代码点列表。

使用模块Encode中的函数解码,您可以解码二进制字符串,以确保文本处理功能正常工作。

More on Perl, charsets and encodings

祝你好运