]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - doc/bugs/removing_pages_with_utf8_characters.mdwn
optimize for common case where list is not changed
[git.ikiwiki.info.git] / doc / bugs / removing_pages_with_utf8_characters.mdwn
index a962a328ad1bbcbb4dff51d2f921ccca55bbf973..0d96aa75f4dfd6b2aee6638a55b27dc2a1273651 100644 (file)
@@ -2,6 +2,10 @@ I have a page with the name "umläute". When I try to remove it, ikiwiki says:
 
 Error: ?umläute does not exist 
 
+> I'm curious about the '?' in the "?umläute" message. Suggests that the
+> filename starts with another strange character. Can I get a copy of a
+> git repository or tarball containing this file? --[[Joey]] 
+
 I wrote the following patch, which seems to work on my machine. I'm running on FreeBSD 6.3-RELEASE with ikiwiki-3.20100102.3 and perl-5.8.9_3.
 
     --- remove.pm.orig      2009-12-14 23:26:20.000000000 +0100
@@ -16,3 +20,32 @@ I wrote the following patch, which seems to work on my machine. I'm running on F
                                     # This untaint is safe because of the
 
 
+> The problem with this patch is that, in a recent fix to the same
+> plugin, I made `@pages` come from `$form->field("page")`, and
+> that, in turn is already run through `decode_form_utf8` just above the
+> code you patched. So I need to understand why that is apparently not
+> working for you. (It works fine for me, even when deleting a file named 
+> "umläute" --[[Joey]] 
+
+----
+
+> Update, having looked at the file in the src of the wiki that
+> is causing trouble for remove, it is: `uml\303\203\302\244ute.mdwn`  
+> And that is not utf-8 encoded, which, represented the same
+> would be: `uml\303\244ute.mdwn`
+> 
+> I think it's doubly-utf-8 encoded, which perhaps explains why the above
+> patch works around the problem (since the page name gets doubly-decoded
+> with it). The patch doesn't fix related problems when using remove, etc.
+> 
+> Apparently, on apoca's system, perl encodes filenames differently
+> depending on locale settings. On mine, it does not. Ie, this perl
+> program always creates a file named `uml\303\244ute`, no matter
+> whether I run it with LANG="" or LANG="en_US.UTF-8":
+> 
+>      perl -e 'use IkiWiki; writefile("umläute", "./", "baz")'
+> 
+> Remains to be seen if this is due to the older version of perl used
+> there, or perhaps FreeBSD itself. --[[Joey]] 
+> 
+> Update: Perl 5.10 fixed the problem. --[[Joey]]