2013-10-16 58 views
2

我有一个包含ISO解码问题的Perl

$string = "&®"; 

当我做HTML::Entities::decode($string);它返回我的&®从我想通了,这个功能是无法解码的ISO代码http://www.w3schools.com/tags/ref_entities.asp

那么字符串我尝试了一些其他的东西喜欢,但没有成功

Encode::decode('utf8', '®') // returns ® 
Encode::decode_utf8('®') // returns ® 

然后我试图手动替换它使用正则表达式模式,

$string =~ s/®/®/g; 

但上述行转换成&®,可有一个人请告诉我如何把这些字符ISO解码,并且在手动的情况下更换为什么Â会来吗?

+1

对实体权威的文档是[在HTML规范(http://www.w3.org/TR/html/syntax.html#named-character-references),不在不可靠的w3schools。无论如何,我无法重现:'perl -CS -MHTML :: Entities -E'say decode_entities“& ®”''产生预期的输出,使用最新的H:E v3.69 perl v5.18.1。你使用什么版本? – amon

+0

perl 5.14.2正常输出也是(HTML ::实体3.69太) – Suic

+0

回复:“它返回给我'&®'”,那不是真的,它返回'&®'。 – ikegami

回答

-1

尝试use utf8;。这个工作对我来说:

use strict; 
use warnings; 
use utf8; 
use Encode; 

my $s = '®'; 

$s =~ s/®/®/g; 

print encode('utf8', $s); 
+0

utf-8编码后它变得像Ã –

+0

请回答ikegami和amon的问题 – Suic