From b6c512a6b0420d5b83e05282c8d0251d47742fae Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Thu, 22 Oct 2009 14:37:00 -0400
Subject: [PATCH] - fix rc_utf8_clean() on Windows (#1486232)

---
 CHANGELOG                        |    2 +-
 program/include/rcube_shared.inc |   11 +++++++----
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 02e6a4c..dc29572 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -3,7 +3,7 @@
 
 - Added server-side e-mail address validation with 'email_dns_check' option (#1485857)
 - Fix login page loading into an iframe when session expires (#1485952)
-- added option 'force_https_port' in 'force_https' plugin (#1486091)
+- Allow setting port number in 'force_https' option (#1486091)
 - Option 'force_https' replaced by 'force_https' plugin
 - Fix IE issue with non-UTF-8 characters in AJAX response (#1486159)
 - Partially fixed "empty body" issue by showing raw body of malformed message (#1486166)
diff --git a/program/include/rcube_shared.inc b/program/include/rcube_shared.inc
index d602910..97314cc 100644
--- a/program/include/rcube_shared.inc
+++ b/program/include/rcube_shared.inc
@@ -599,12 +599,15 @@
     return $input;
   }
   
-  if (!is_string($input))
+  if (!is_string($input) || $input == '')
     return $input;
   
-  // iconv is 10x faster
-  if (function_exists('iconv'))
-    return iconv('UTF8', 'UTF8//IGNORE', $input);
+  // iconv/mbstring are much faster (especially with long strings)
+  if (function_exists('mb_convert_encoding') && ($res = mb_convert_encoding($input, 'UTF8', 'UTF8')))
+    return $res;
+
+  if (function_exists('iconv') && ($res = iconv('UTF8', 'UTF8//IGNORE', $input)))
+    return $res;
 
   $regexp = '/^('.
 //    '[\x00-\x7F]'.                                  // UTF8-1

--
Gitblit v1.9.1