2013-10-16 88 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