对perl的Entities.pm感到困惑

时间:2010-12-14 16:04:03

标签: xml perl encoding

好的,我在这里有点困惑。

我正在尝试为以utf8编码的iPhone应用创建Feed。

我们的西班牙语内容有很多拉丁字符(精确等)。我使用Entities.pm lib中的decode_entities函数,但我注意到它转换为的char值正在破坏我的feed - 我的意思是feed无效,即使有一些CDATA标签标题字段。经过进一步调查,我发现这个lib正在从一个html实体转换为它相应的unicode值,但它使用的是ISO-8859而不是utf8。

如何从html-entity转换为utf8?

2 个答案:

答案 0 :(得分:4)

use Encode;
use HTML::Entities;

my $x = decode_utf8(decode_entities("α — ω"));

binmode STDOUT, ":utf8";
print $x;

(如果你直接打印$ x,你会得到“打印中的宽字符”警告)。

答案 1 :(得分:1)

事实证明问题不是Entities.pm,而是我用来打开文件的格式。我理所当然地认为Perl会自动在Utf-8中打开文件。

我将下面的行添加到我的文件顶部,现在认为Feed有效:

使用open':encoding(utf8)';