From abdc5898b6f2ae39a48afbb464f296419e8ac646 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Fri, 03 Oct 2008 04:05:59 -0400
Subject: [PATCH] - Add support for SJIS, GB2312, BIG5 in rc_detect_encoding() - Fix vCard file encoding detection for non-UTF-8 strings (#1485410)

---
 CHANGELOG                        |    4 ++++
 program/include/rcube_shared.inc |   14 ++++++++------
 program/include/rcube_vcard.php  |    3 +++
 3 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 6144845..085139d 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,10 @@
 CHANGELOG RoundCube Webmail
 ---------------------------
 
+2008/10/03 (alec)
+- Add support for SJIS, GB2312, BIG5 in rc_detect_encoding()
+- Fix vCard file encoding detection for non-UTF-8 strings (#1485410)
+
 2008/10/02 (alec)
 ----------
 - Minimize "inline" javascript scripts use (#1485433)
diff --git a/program/include/rcube_shared.inc b/program/include/rcube_shared.inc
index a9ade36..7c379a9 100644
--- a/program/include/rcube_shared.inc
+++ b/program/include/rcube_shared.inc
@@ -249,17 +249,17 @@
   if ($bytes > 1073741824)
   {
     $gb = $bytes/1073741824;
-    $str = sprintf($gb>=10 ? "%d " : "%.1f ", $gb) . rcube_label('GB');
+    $str = sprintf($gb>=10 ? "%d GB" : "%.1f GB", $gb);
   }
   else if ($bytes > 1048576)
   {
     $mb = $bytes/1048576;
-    $str = sprintf($mb>=10 ? "%d " : "%.1f ", $mb) . rcube_label('MB');
+    $str = sprintf($mb>=10 ? "%d MB" : "%.1f MB", $mb);
   }
   else if ($bytes > 1024)
-    $str = sprintf("%d ",  round($bytes/1024)) . rcube_label('KB');
+    $str = sprintf("%d KB",  round($bytes/1024));
   else
-    $str = sprintf('%d ', $bytes) . rcube_label('B');
+    $str = sprintf('%d B', $bytes);
 
   return $str;
 }
@@ -548,10 +548,12 @@
     // FIXME: the order is important, because sometimes 
     // iso string is detected as euc-jp and etc.
     $enc = array(
-	'UTF-8', 'ISO-8859-1', 'ISO-8859-2', 'ISO-8859-3', 'ISO-8859-4',
+	'SJIS', 'BIG5', 'GB2312', 'UTF-8',
+	'ISO-8859-1', 'ISO-8859-2', 'ISO-8859-3', 'ISO-8859-4',
 	'ISO-8859-5', 'ISO-8859-6', 'ISO-8859-7', 'ISO-8859-8', 'ISO-8859-9',
 	'ISO-8859-10', 'ISO-8859-13', 'ISO-8859-14', 'ISO-8859-15', 'ISO-8859-16',
-	'WINDOWS-1252', 'WINDOWS-1251', 'EUC-JP', 'EUC-TW', 'KOI8-R'
+	'WINDOWS-1252', 'WINDOWS-1251', 'EUC-JP', 'EUC-TW', 'KOI8-R', 
+	'ISO-2022-KR', 'ISO-2022-JP'
     );
 
     $result = mb_detect_encoding($string, join(',', $enc));
diff --git a/program/include/rcube_vcard.php b/program/include/rcube_vcard.php
index 8cc390c..ca7ca08 100644
--- a/program/include/rcube_vcard.php
+++ b/program/include/rcube_vcard.php
@@ -396,6 +396,9 @@
     if (substr($string, 0, 2) == "\xFF\xFE")     return 'UTF-16LE';  // Little Endian
     if (substr($string, 0, 3) == "\xEF\xBB\xBF") return 'UTF-8';
 
+    if ($enc = rc_detect_encoding($string))
+      return $enc;
+
     // No match, check for UTF-8
     // from http://w3.org/International/questions/qa-forms-utf-8.html
     if (preg_match('/\A(

--
Gitblit v1.9.1