From 63114d05f00476b5f1f8272b8fed5dd5f9e6c777 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 17 Jun 2021 13:48:49 +0200 Subject: [PATCH] Fixed html charset edge case --- app/src/main/java/com/sun/mail/handlers/text_plain.java | 5 +---- app/src/main/java/eu/faircode/email/MessageHelper.java | 8 ++++++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/sun/mail/handlers/text_plain.java b/app/src/main/java/com/sun/mail/handlers/text_plain.java index 248d715723..3562bf1cdc 100644 --- a/app/src/main/java/com/sun/mail/handlers/text_plain.java +++ b/app/src/main/java/com/sun/mail/handlers/text_plain.java @@ -146,10 +146,7 @@ public class text_plain extends handler_base { String charset = ct.getParameter("charset"); if (charset == null) // If the charset parameter is absent, use US-ASCII. - charset = "us-ascii"; - if ("us-ascii".equals(charset) && - "text/html".equalsIgnoreCase(ct.getBaseType())) - charset = StandardCharsets.UTF_8.name(); + charset = StandardCharsets.ISO_8859_1.name(); return MimeUtility.javaCharset(charset); } catch (Exception ex) { return null; diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 1c6b69d0a0..a006f66066 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -1907,8 +1907,11 @@ public class MessageHelper { result = HtmlHelper.flow(result); result = "
" + HtmlHelper.formatPre(result) + "
"; } else if (h.isHtml()) { - // Fix incorrect UTF16 - if (charset != null) + if (charset == null) { + if (CharsetHelper.isUTF8(result)) + result = new String(result.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + } else { + // Fix incorrect UTF16 try { Charset c = Charset.forName(charset); if (CHARSET16.contains(c)) { @@ -1924,6 +1927,7 @@ public class MessageHelper { } catch (Throwable ex) { Log.w(ex); } + } if (charset == null) { //