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