diff options
author | Joey Hess <joey@kitenet.net> | 2012-03-03 11:27:59 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-03-03 11:27:59 -0400 |
commit | 78737cbfbf91c7b31ed5d216a23de8d360a76392 (patch) | |
tree | eab70ae43573eb03d782e353d9c1134ee892ef1f /IkiWiki/Plugin | |
parent | 251188cf706f5c9c40e2b4003cd3cd2a777d00ab (diff) | |
download | ikiwiki-78737cbfbf91c7b31ed5d216a23de8d360a76392.tar ikiwiki-78737cbfbf91c7b31ed5d216a23de8d360a76392.tar.gz |
shortcut: Support Wikipedia's form of url-encoding for unicode characters
I think it's the wrong encoding, seems like mojibake to me, but it works
now. Closes: #661198
Diffstat (limited to 'IkiWiki/Plugin')
-rw-r--r-- | IkiWiki/Plugin/shortcut.pm | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/IkiWiki/Plugin/shortcut.pm b/IkiWiki/Plugin/shortcut.pm index 0cedbe447..98df143ab 100644 --- a/IkiWiki/Plugin/shortcut.pm +++ b/IkiWiki/Plugin/shortcut.pm @@ -73,11 +73,21 @@ sub shortcut_expand ($$@) { add_depends($params{destpage}, "shortcuts"); my $text=join(" ", @params); - my $encoded_text=$text; - $encoded_text=~s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg; - $url=~s{\%([sS])}{ - $1 eq 's' ? $encoded_text : $text + $url=~s{\%([sSW])}{ + if ($1 eq 's') { + my $t=$text; + $t=~s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg; + $t; + } + elsif ($1 eq 'S') { + $text; + } + elsif ($1 eq 'W') { + my $t=Encode::encode_utf8($text); + $t=~s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg; + $t; + } }eg; $text=~s/_/ /g; |