我有一个简单的POD文本文件:
$cat test.pod =encoding UTF-8 Münster
00000000 3d 65 6e 63 6f 64 69 6e 67 20 55 54 46 2d 38 0a |=encoding UTF-8.| 00000010 0a 4d c3 bc 6e 73 74 65 72 0a |.M..nster.| 0000001a
“ü”被编码为两个字节C3和BC.
但是当我在文件上运行perldoc时,将可爱的格式化的UTF-8字符转换成ASCII码.
而且,正确处理将“ü”代表为“ue”的德语公约.
$perldoc test.pod | cat TEST(1) User Contributed Perl Documentation TEST(1) Muenster perl v5.16.3 2014-06-10 TEST(1)
为什么这样做?
有没有额外的声明,我可以放入我的文件,以阻止它发生?
在App :: perlbrew进一步调查之后,我发现这个区别来自于一个特定版本的Pod :: Perldoc.
perl-5.10.1 3.14_04 Muenster perl-5.12.5 3.15_02 Muenster perl-5.14.4 3.15_04 Muenster perl-5.16.2 3.17 Münster perl-5.16.3 3.19 Muenster perl-5.16.3 3.17 Münster perl-5.17.3 3.17 Münster perl-5.18.0 3.19 Muenster perl-5.18.1 3.23 Münster
然而,如果可能,我仍然希望使Pod :: Perldoc 3.14,3.15和3.19的行为“正确”.
解决方法
找到这个RT票
http://rt.cpan.org/Public/Bug/Display.html?id=39000
这个“bug”似乎是Perl 5.10引入的,也许这在以后的版本中解决了.
另请参阅:How can I use Unicode characters in Perl POD-derived man pages?和incorrect behaviour of perldoc with UTF-8 texts.