From abdc5898b6f2ae39a48afbb464f296419e8ac646 Mon Sep 17 00:00:00 2001 From: alecpl Date: Fri, 3 Oct 2008 08:05:59 +0000 Subject: - Add support for SJIS, GB2312, BIG5 in rc_detect_encoding() - Fix vCard file encoding detection for non-UTF-8 strings (#1485410) --- program/include/rcube_shared.inc | 14 ++++++++------ program/include/rcube_vcard.php | 3 +++ 2 files changed, 11 insertions(+), 6 deletions(-) (limited to 'program/include') diff --git a/program/include/rcube_shared.inc b/program/include/rcube_shared.inc index a9ade36db..7c379a97e 100644 --- a/program/include/rcube_shared.inc +++ b/program/include/rcube_shared.inc @@ -249,17 +249,17 @@ function show_bytes($bytes) 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 @@ function rc_detect_encoding($string, $failover='') // 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 8cc390c7a..ca7ca0822 100644 --- a/program/include/rcube_vcard.php +++ b/program/include/rcube_vcard.php @@ -396,6 +396,9 @@ class rcube_vcard 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( -- cgit v1.2.3