]> Sergey Matveev's repositories - public-inbox.git/commitdiff
view: try assuming UTF-8 for bogus charsets
authorEric Wong <e@80x24.org>
Thu, 18 Aug 2016 01:10:35 +0000 (01:10 +0000)
committerEric Wong <e@80x24.org>
Thu, 18 Aug 2016 01:32:46 +0000 (01:32 +0000)
For some reason, Alpine will set X-UNKNOWN for valid UTF-8.
Since we favor UTF-8 HTML anyways, try forcing Email::MIME to
handle text/plain as UTF-8 which might show up better.

At least this change renders

<alpine.DEB.2.20.1608131214070.4924@virtualbox>

properly by showing "•" (&#8226;) instead of
"â ¢" (&#226;&#128;&#162;)

Reported-by: Thomas Ferris Nicolaisen <tfnico@gmail.com>
lib/PublicInbox/View.pm

index 3f0e1226118702f3c62b94fbe06dd04b809dcfdd..6997c1c595c270e0e14c21ccfb29cfdd969c18f2 100644 (file)
@@ -457,8 +457,14 @@ sub add_text_body {
        my $err = $@;
        if ($err) {
                if ($ct =~ m!\btext/plain\b!i) {
+                       # Try to assume UTF-8 because Alpine seems to
+                       # do wacky things and set charset=X-UNKNOWN
+                       $part->charset_set('UTF-8');
+                       $s = eval { $part->body_str };
+
+                       # If forcing charset=UTF-8 failed,
                        # attach_link will warn further down...
-                       $s = $part->body;
+                       $s = $part->body if $@;
                } else {
                        return attach_link($upfx, $ct, $p, $fn);
                }