可以用UTF-8编写Perl文档。要做到这一点,你应该写在你的POD中:
=encoding NNN
但你应该写什么NNN
?不同的来源给出了不同的答案。
=encoding utf8
=encoding UTF-8
=encoding utf-8
答案是正确的?在POD中写入的正确字符串是什么?
答案 0 :(得分:14)
=encoding UTF-8
According to IANA, charset names are case-insensitive,所以utf-8
是相同的。
utf8
is Perl's lax variant of UTF-8.但是,为了安全起见,您希望对POD处理器严格要求。
答案 1 :(得分:3)
正如达西姆指出的那样,我被误导了。 =encoding=UTF-8
和=encoding=utf-8
应用严格编码,=encoding=utf8
是宽松编码:
$ cat enc-test.pod
=encoding ENCNAME
=head1 TEST '\344\273\245\376\202\200\200\200\200\200'
=cut
(此处\xxx
表示值为xxx
的文字字节。\344\273\245
是有效的UTF-8序列,\376\202\200\200\200\200\200
不是)
=encoding=utf-8
$ perl -pe 's/ENCNAME/utf-8/' enc-test.pod | pod2cpanhtml | grep /h1
>TEST '以此�'</a></h1>
=encoding=utf8
$ perl -pe 's/ENCNAME/utf8/' enc-test.pod | pod2cpanhtml | grep /h1
Code point 0x80000000 is not Unicode, no properties match it; ...
Code point 0x80000000 is not Unicode, no properties match it; ...
Code point 0x80000000 is not Unicode, no properties match it; ...
>TEST '以�'</a></h1>
它们都是等价的。 =encoding
的参数应该是Encode::Supported
模块识别的名称。当您深入查看该文档时,您会看到
utf8
UTF-8
是utf8
的别名,utf-8
相当于UTF-8
最佳做法是什么?我不确定。我不认为你使用官方IANA名称出错(根据daxim的回答),但是在官方的Perl文档之后你也不会出错。