about summary refs log tree commit homepage
path: root/lib
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2016-08-18 01:10:35 +0000
committerEric Wong <e@80x24.org>2016-08-18 01:32:46 +0000
commit1b28cc7f00a866cb2b60a6569002db1f605019d5 (patch)
treea38dac8d8ab2c067546a8b33b7d0789f48f2b3cf /lib
parent98bd8519675595f6697185a9bd5ee06669bd50be (diff)
downloadpublic-inbox-1b28cc7f00a866cb2b60a6569002db1f605019d5.tar.gz
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>
Diffstat (limited to 'lib')
-rw-r--r--lib/PublicInbox/View.pm8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm
index 3f0e1226..6997c1c5 100644
--- a/lib/PublicInbox/View.pm
+++ b/lib/PublicInbox/View.pm
@@ -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);
                 }