decode utf-8 in recentchanges_link parameter
authorJoey Hess <joey@kodama.kitenet.net>
Fri, 26 Sep 2008 19:40:01 +0000 (15:40 -0400)
committerJoey Hess <joey@kodama.kitenet.net>
Fri, 26 Sep 2008 19:40:01 +0000 (15:40 -0400)
IkiWiki/Plugin/recentchanges.pm
doc/bugs/unicode_encoded_urls_and_recentchanges.mdwn

index 37e45a05af65109bedb626eb56d6de8ae20ac3d1..563ab7db1950e1d9ca4863d54784a86ca2bd47ea 100644 (file)
@@ -4,6 +4,7 @@ package IkiWiki::Plugin::recentchanges;
 use warnings;
 use strict;
 use IkiWiki 2.00;
+use Encode;
 
 sub import { #{{{
        hook(type => "getsetup", id => "recentchanges", call => \&getsetup);
@@ -86,7 +87,7 @@ sub cgi ($) { #{{{
                # page they link to is deleted, or newly created, or
                # changes for whatever reason. So this CGI handles that
                # dynamic linking stuff.
-               my $page=$cgi->param("page");
+               my $page=decode_utf8($cgi->param("page"));
                if (!defined $page) {
                        error("missing page parameter");
                }
index 704ee18cfe0fe39d41f9ff40f00f671c085efa39..d8696cb4cf2e6af56db9b276c606b833d040dd0f 100644 (file)
@@ -17,9 +17,19 @@ the problem can be shown with an auto-setup'd ikiwiki without cgi when manually
 >> same happens, by the way, when using meta-redir to a page with high bytes in
 >> the name.)
 >>
+>>> The problem is that all cgi inputs have to be explicitly decoded to
+>>> utf-8, which I've now done for `recentchange_link`.
+>>> 
+>>> I cannot, however, reproduce a problem with meta redir. Here it
+>>> generated the following html, which redirected the browser ok:
+>>>    <meta http-equiv="refresh" content="0; URL=./../รข/" />
+>>
 >> update: i've had a look at the git options; you could run git with '-z' (NUL
 >> termination) in the `git_commit_info` function; this would require some
 >> changes in `parse_diff_tree`, but otherwise completely eliminate the
 >> problems with git escaping.
 >> 
+>>> If you would like to develop a patch to that effect, I'd be glad to
+>>> drop the current nasty code.
+>> 
 >> --[[chrysn]]