8

Perl ドキュメントは UTF-8 で記述できます。これを行うには、POD に次のように記述する必要があります。

=encoding NNN

しかし、代わりに何を書くべきですNNNか?ソースが異なれば、答えも異なります。

正解は?PODに書く正しい文字列は?

4

2 に答える 2

15
=encoding UTF-8

IANA によると、文字セット名は大文字と小文字を区別しないためutf-8、同じです。

utf8Perl の UTF-8 の緩いバリアントです。ただし、安全のために、POD プロセッサには厳密に対応する必要があります。

于 2013-08-07T17:01:33.680 に答える
3

daxim が指摘するように、私は誤解されています。厳密なエンコーディング=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は、 value を持つリテラル バイトを意味します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 &#39;&#20197;&#27492;&#65533;&#39;</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 &#39;&#20197;&#2147483648;&#39;</a></h1>

それらはすべて同等です。への引数=encodingは、モジュールによって認識される名前であることが期待されEncode::Supportedます。そのドキュメントをドリルダウンすると、

  • 正規のエンコーディング名はutf8
  • 名前UTF-8は のエイリアスでutf8あり、
  • 名前は大文字と小文字を区別しないため、次utf-8と同等ですUTF-8

ベストプラクティスは何ですか? わからない。(daximの回答によると)公式のIANA名を使用して間違いはないと思いますが、公式のPerlドキュメントに従っても間違いはありません。

于 2013-08-07T17:09:47.500 に答える