source: upgrade vim output to unicode
authorMischa POSLAWSKY <perl@shiar.org>
Sat, 31 Jan 2015 21:39:41 +0000 (22:39 +0100)
committerMischa POSLAWSKY <perl@shiar.org>
Sun, 1 Feb 2015 17:34:57 +0000 (18:34 +0100)
Prevents utf8 output from being parsed as latin1 if open modes aren't set
(apparently with mod_perl execution at least).

source.plp

index f476ee8d3a2a41259cf67d00651cfe0d2a31c2ed..7b0ebec82552e55bb6a09bef911ea6c50c6cff0d 100644 (file)
@@ -68,6 +68,7 @@ else {
        }
        -r $source or die "Requested file not found\n";
 
+       require Encode;
        if (eval { require Text::VimColor and Text::VimColor->VERSION(0.12) }) {
                delete $Text::VimColor::SYNTAX_TYPE{Underlined};
                my %TYPETAG = (
@@ -93,13 +94,12 @@ else {
                        if (!$_->[0] and $_->[1] =~ s/^(\s*)([A-Z]\w+(?:::\w+)+)(?![^;\s])//) {
                                printf '%s<a href="%s">%s</a>', $1, "/source/$2", $2;
                        }
-                       print Text::VimColor::_xml_escape($_->[1]);
+                       print Text::VimColor::_xml_escape(Encode::decode_utf8($_->[1]));
                        print "</$tag>" if $tag;
                }
                print "</pre>\n";
        }
        else {
-               require Encode;
                print "<pre>\n";
                print EscapeHTML(Encode::decode_utf8(ReadFile($source)));
                print "</pre>\n";