diff options
author | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2006-06-15 06:37:33 +0000 |
---|---|---|
committer | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2006-06-15 06:37:33 +0000 |
commit | 202c4d522f9f83d0e439b3846fb6a90e4eebee59 (patch) | |
tree | 4270dc62f2478d11c0159f1e99d745d1939babba /IkiWiki | |
parent | 070f255d6cc16dd2eb6c53b40790a5fb905300af (diff) |
* -CSD does not affect modules, so readfile() was not using the utf-8 input
layer, which led to lots of problems; make it force read files as utf-8.
Closes: #373203
* writefile() likewise needs to use the utf8 output layer.
* Remove the -CSD from ikiwiki's hashbang since it's useless to have it
there.
* Revert some of the decode_utf8 changes in CGI.pm that seem unnecessary
given the readfile fix.
* Add utf-8 testcases for readfile and htmlize.
Diffstat (limited to 'IkiWiki')
-rw-r--r-- | IkiWiki/CGI.pm | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index 4f4c48876..0d763caa3 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -43,6 +43,7 @@ sub cgi_recentchanges ($) { #{{{ styleurl => styleurl(), baseurl => "$config{url}/", ); + # XXX why is this needed? If it's raw utf-8 won't print DTRT? require Encode; print $q->header(-charset=>'utf-8'), Encode::decode_utf8($template->output); } #}}} @@ -353,12 +354,14 @@ sub cgi_editpage ($$) { #{{{ } elsif ($form->submitted eq "Preview") { require IkiWiki::Render; + # Apparently FormBuilder doesn't not treat input as + # utf-8, so decode from it. require Encode; my $content = Encode::decode_utf8($form->field('editcontent')); $form->field(name => "editcontent", value => $content, force => 1); $form->tmpl_param("page_preview", - Encode::decode_utf8(htmlize($config{default_pageext}, - linkify($page, $page, $content)))); + htmlize($config{default_pageext}, + linkify($page, $page, $content))); } else { $form->tmpl_param("page_preview", ""); @@ -421,8 +424,7 @@ sub cgi_editpage ($$) { #{{{ ! length $form->field('editcontent')) { my $content=""; if (exists $pagesources{lc($page)}) { - require Encode; - $content=Encode::decode_utf8(readfile(srcfile($pagesources{lc($page)}))); + $content=readfile(srcfile($pagesources{lc($page)})); $content=~s/\n/\r\n/g; } $form->field(name => "editcontent", value => $content, @@ -453,6 +455,7 @@ sub cgi_editpage ($$) { #{{{ } if (defined $form->field('comments') && length $form->field('comments')) { + # Decode utf-8 since FormBuilder does not. require Encode; $message.=Encode::decode_utf8(": ".$form->field('comments')); } |