From a80b7d416ce744b5f5ce92fce0179dd613dd0207 Mon Sep 17 00:00:00 2001
From: svncommit <devs@roundcube.net>
Date: Thu, 30 Jul 2009 22:57:53 -0400
Subject: [PATCH] better solution for HTML washing encoding issue

---
 CHANGELOG                   |    2 +-
 program/steps/mail/func.inc |   14 +++++++-------
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 673f8f9..420c592 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,12 +1,12 @@
 CHANGELOG RoundCube Webmail
 ===========================
 
+- Fix HTML washing to respect character encoding
 - Fix endless loop in iil_C_Login() with Courier IMAP (#1486010)
 - Fix #messagemenu display on IE (#1486006)
 - Speedup UI by using sprites for (toolbar) buttons
 - Fix charset names with X- prefix handling
 - Fix displaying of HTML messages with unknown/malformed tags (#1486003)
-- Fix HTML washing of non-UTF8 messages
 
 RELEASE 0.3-RC1
 ---------------
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index 9928cb1..2a301ae 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -685,17 +685,17 @@
   // fix (unknown/malformed) HTML tags before "wash"
   $html = preg_replace_callback('/(<[\/!]*)([^ >]+)/', 'rcmail_html_tag_callback', $html);
 
-  // charset was converted to UTF-8 in rcube_imap::get_message_part() -> change charset specification in HTML accordingly
+  // charset was converted to UTF-8 in rcube_imap::get_message_part(),
+  // change charset specification in HTML accordingly
   $charset_pattern = '/(\s+content=[\'"]?\w+\/\w+;\s*charset)=([a-z0-9-_]+)/i';
   if (preg_match($charset_pattern, $html)) {
     $html = preg_replace($charset_pattern, '\\1='.RCMAIL_CHARSET, $html);
-  } else {
-    // add head for malformed messages, washtml cannot work without that
-    if (!preg_match('/<head[^>]*>(.*)<\/head>/Uims', $html))
-      $html = '<head></head>'. $html;
-    $html = substr_replace($html, '<meta http-equiv="content-type" content="text/html; charset='.RCMAIL_CHARSET.'" />', intval(stripos($html, '<head>')+6), 0);
   }
-    
+  // add head for malformed messages, washtml cannot work without that
+  if (!preg_match('/<head[^>]*>(.*)<\/head>/Uims', $html))
+    $html = '<head></head>'. $html;
+  $html = substr_replace($html, '<meta http-equiv="Content-Type" content="text/html; charset='.RCMAIL_CHARSET.'" />', intval(stripos($html, '<head>')+6), 0);
+
   // turn relative into absolute urls
   $html = rcmail_resolve_base($html);
 

--
Gitblit v1.9.1