--- HeadlinesPlugin.pm 2002-08-02 09:53:29.000000000 +0200 +++ /home/httpd/twiki/lib/TWiki/Plugins/HeadlinesPlugin.pm 2003-10-28 14:15:11.000000000 +0100 @@ -45,6 +45,7 @@ $defaultRefresh $defaultLimit $defaultHeader $defaultFormat $perlDigestMD5Found ); +use Unicode::String; $VERSION = '1.000'; $perlDigestMD5Found = 0; @@ -154,6 +155,16 @@ return $text; } +sub encode { + my ($text,$encoding) = (@_); + if ($encoding =~ /UTF-8/i) { + my $u=Unicode::String::utf8($text); + return $u->latin1; + } else { + return $text; + } +} + # ========================= sub _handleHeadlinesTag { @@ -190,12 +201,16 @@ } my $text = "$thePre\n"; + my $encoding = ""; my $sub = ""; my $val = ""; + if( $raw =~ // ) { + $encoding = $1; + } if( $raw =~ /(.*?)<\/channel>/ ) { $sub = $1; if( $sub =~ /(.*?)<\/title>/ ) { - $val = $1; + $val = encode($1,$encoding); $header =~ s/\$channeltitle/$val/gos; } if( $sub =~ /<link>(.*?)<\/link>/ ) { @@ -203,14 +218,14 @@ $header =~ s/\$channellink/$val/gos; } if( $sub =~ /<description>(.*?)<\/description>/ ) { - $val = $1; + $val = encode($1,$encoding); $header =~ s/\$channeldescription/$val/gos; } } if( $raw =~ /<image.*?>(.*?)<\/image>/ ) { $sub = $1; if( $sub =~ /<title>(.*?)<\/title>/ ) { - $val = $1; + $val = encode($1,$encoding); $header =~ s/\$imagetitle/$val/gos; } if( $sub =~ /<url>(.*?)<\/url>/ ) { @@ -222,10 +237,17 @@ $header =~ s/\$imagelink/$val/gos; } if( $sub =~ /<description>(.*?)<\/description>/ ) { - $val = $1; + $val = encode($1,$encoding); $header =~ s/\$imagedescription/$val/gos; } } + + # Clean-up in case the information are not defined + $header =~ s/\$imagetitle/ /gos; + $header =~ s/\$imageurl/ /gos; + $header =~ s/\$imagelink/ /gos; + $header =~ s/\$imagedescription/ /gos; + $text .= "$thePre$header"; $raw =~ s/.*?(<item[^a-z])/$1/os; # cut stuff above all <item>s @@ -236,7 +258,7 @@ $line = $format; $ok = 0; if( /<title>(.*?)<\/title>/ ) { - $val = $1; + $val = encode($1,$encoding); $line =~ s/\$title/$val/gos; $ok = 1; } @@ -246,7 +268,7 @@ $ok = 1; } if( /<description>(.*?)<\/description>/ ) { - $val = $1; + $val = encode($1,$encoding); $line =~ s/\$description/$val/gos; $ok = 1; }