我的字符集是'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?
感谢您的帮助和时间。
答案 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)", $resource
或binmode $fh, ":encoding(NAME)"
。
答案 1 :(得分:0)
Perl Strings可用于保存文本字符串或二进制数据。给定一个字符串,您通常无法找出它是否包含文本或二进制数据 - 您必须自己跟踪它。
与环境的交互(如从STDIN或文件读取数据,或打印它)将字符串视为二进制数据。对于许多内置函数(如gethostbyname)的返回值和将信息传递给程序的特殊变量(%ENV和@ARGV)也是如此。
处理文本的其他内置函数(如uc和lc以及正则表达式)将字符串视为文本,或者更准确地将其视为代码点列表。
使用模块Encode中的函数解码,您可以解码二进制字符串,以确保文本处理功能正常工作。
More on Perl, charsets and encodings
祝你好运