summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Plugin/git.pm5
-rw-r--r--debian/changelog1
-rw-r--r--doc/bugs/unicode_encoded_urls_and_recentchanges.mdwn8
3 files changed, 11 insertions, 3 deletions
diff --git a/IkiWiki/Plugin/git.pm b/IkiWiki/Plugin/git.pm
index 08ee4cb63..14b0ab285 100644
--- a/IkiWiki/Plugin/git.pm
+++ b/IkiWiki/Plugin/git.pm
@@ -308,13 +308,16 @@ sub parse_diff_tree ($@) { #{{{
my $sha1_to = shift(@tmp);
my $status = shift(@tmp);
+ # git does not output utf-8 filenames, but instead
+ # double-quotes them with the utf-8 characters
+ # escaped as \nnn\nnn.
if ($file =~ m/^"(.*)"$/) {
($file=$1) =~ s/\\([0-7]{1,3})/chr(oct($1))/eg;
}
$file =~ s/^\Q$prefix\E//;
if (length $file) {
push @{ $ci{'details'} }, {
- 'file' => decode_utf8($file),
+ 'file' => decode("utf8", $file),
'sha1_from' => $sha1_from[0],
'sha1_to' => $sha1_to,
};
diff --git a/debian/changelog b/debian/changelog
index 002591083..db80dcf83 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -5,6 +5,7 @@ ikiwiki (2.66) UNRELEASED; urgency=low
ctime.
* attachment: Add admin() pagespec to test if the uploading user is a wiki
admin.
+ * git: Fix handling of utf-8 filenames in recentchanges.
-- Joey Hess <joeyh@debian.org> Thu, 25 Sep 2008 13:45:55 -0400
diff --git a/doc/bugs/unicode_encoded_urls_and_recentchanges.mdwn b/doc/bugs/unicode_encoded_urls_and_recentchanges.mdwn
index 9184a6b84..2568aef38 100644
--- a/doc/bugs/unicode_encoded_urls_and_recentchanges.mdwn
+++ b/doc/bugs/unicode_encoded_urls_and_recentchanges.mdwn
@@ -1,9 +1,13 @@
it appears that unicode characters in the title that are unicode letters are spared the __ filename encoding but instead saved in their utf8 encoding. (correct me if i'm wrong; didn't find the code that does this.) -- see below for examples.
+> Filenames can have any alphanumerics in them without the __ escaping.
+> Your locale determines whether various unicode characters are considered
+> alphanumeric. In other words, it just looks at the [[:alpha:]] character
+> class, whatever your locale defines it to be. --[[Joey]]
+
this is not a problem per se, but (at least with git backend) the recent changes missinterpret the file name character set (it seems to read the filenames as latin1) and both display wrong titles and create broken links.
the problem can be shown with an auto-setup'd ikiwiki without cgi when manually creating utf8 encoded filenames and running ikiwiki with LANG=en_GB.UTF-8 .
-----
+> Encoding issue, I figured out a fix. [[done]] --[[Joey]]
-[[right→link]], [[germanöumlaut]], [[smalµmu]], [[cyrillicԀletter]], [[tibetan༆something]], [[devanagariऔletter]], [[subscript₉nine]], [[subscriptₐa]]