perl - 为什么不“使用 utf-8;” 在 Perl 模块中使用时工作?
问题描述
我们在库中有一个错误,这是由其中一个输入是 Unicode 引起的。
use utf8;
通过使用该库添加到脚本来修复它。
但是,添加use utf8;
到库本身(因此使用该库的所有脚本都将被修复)没有效果。
为什么?这可以解决吗?
解决方案
从文档中:
use utf8 pragma 告诉 Perl 解析器在当前词法范围内的程序文本中允许 UTF-8。
换言之,此编译指示仅适用于当前包。您需要将它放在源代码可能包含 Unicode 字符的每个包中。如果您的输入来自其他地方,那么您需要确保它被正确解码:pragma 对此没有影响。
PS:我明白你的意思是use utf8
,不是use utf-8
(后者不是有效的编译指示)。