In RecentChanges or RSS feeds LocalWiki:action=rss certain characters in urls must be encoded to %xx (see RFC 2396). This is in particular necessary if a Wiki name contains iso-8859-1 umlauts. The following patch corrects it for the recent changes RSS feed. However - it should also be corrected in the usual RecentChanges.
Note that browsers usually do this conversion, but sometimes they can't do it right: I got that RSS feed with iso-8859-1 umlaut urls into a utf-8 portal.
The patch will work if your wiki is configured to iso-latin. It has not been tested for utf-8.
sub GetRssRcLine{ my ($pagename, $timestamp, $host, $userName, $userID, $summary, $isEdit, $pagecount, $revision, $diffPrefix, $historyPrefix) = @_; my ($itemID, $description, $authorLink, $author, $status, $importance, $date, $item, $headItem); + my $pagename_esc = CGI::escape($pagename); # Add to list of items in the <channel/> $itemID = $FullUrl . &ScriptLinkChar() - . &GetOldPageParameters('browse', $pagename, $revision); + . &GetOldPageParameters('browse', $pagename_esc, $revision); $itemID = &QuoteHtml($itemID); $headItem = " <rdf:li rdf:resource=\"$itemID\"/>\n"; # Add to list of items proper. if (($summary ne "") && ($summary ne "*")) { $description = &QuoteHtml($summary); } $host = &QuoteHtml($host); if ($userName) { $author = &QuoteHtml($userName); $authorLink = "link=\"$QuotedFullUrl?$author\""; } else { $author = $host; } $status = (1 == $revision) ? 'new' : 'updated'; $importance = $isEdit ? 'minor' : 'major'; $timestamp += $TimeZoneOffset; my ($sec, $min, $hour, $mday, $mon, $year) = localtime($timestamp); $year += 1900; $date = sprintf("%4d-%02d-%02dT%02d:%02d:%02d%s", $year, $mon+1, $mday, $hour, $min, $sec, $ServerTimeZone); #$date = sprintf("%4d-%02d-%02dT%02d:%02d:%02d+%02d:00", #$year, $mon+1, $mday, $hour, $min, $sec, $TimeZoneOffset/(60*60)); $pagename = &QuoteHtml($pagename); # Write it out longhand $item = <<RSS ; <item rdf:about="$itemID"> <title>$pagename</title> - <link>$QuotedFullUrl?$pagename</link> + <link>$QuotedFullUrl?$pagename_esc</link> <description>$description</description> <dc:date>$date</dc:date> <dc:contributor> <rdf:Description wiki:host="$host" $authorLink> <rdf:value>$author</rdf:value> </rdf:Description> </dc:contributor> <wiki:status>$status</wiki:status> <wiki:importance>$importance</wiki:importance> - <wiki:diff>$diffPrefix$pagename</wiki:diff> + <wiki:diff>$diffPrefix$pagename_esc</wiki:diff> <wiki:version>$revision</wiki:version> - <wiki:history>$historyPrefix$pagename</wiki:history> + <wiki:history>$historyPrefix$pagename_esc</wiki:history> </item> RSS return ($headItem, $item); }
For RecentChanges this was fixed with the WikiPatches/ProperUriEscaping from UngarPeter. -- MarkusLude