From c9a2fa9db0b3cc9edee0b4ee82d02849b5263766 Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Wed, 11 Mar 2009 17:43:18 -0400 Subject: [PATCH] Fix charset conversion error logging --- program/include/main.inc | 19 +++++++++++++------ 1 files changed, 13 insertions(+), 6 deletions(-) diff --git a/program/include/main.inc b/program/include/main.inc index 86fe578..b22be1a 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -186,7 +186,13 @@ $to = $to==NULL ? strtoupper(RCMAIL_CHARSET) : strtoupper($to); $error = false; $conv = null; - if ($from==$to || $str=='' || empty($from)) + # RFC1642 + if ($from == 'UNICODE-1-1-UTF-7') + $from = 'UTF-7'; + if ($to == 'UNICODE-1-1-UTF-7') + $to = 'UTF-7'; + + if ($from == $to || empty($str) || empty($from)) return $str; $aliases = array( @@ -208,7 +214,6 @@ return $_iconv; } } - if (is_null($mbstring_loaded)) $mbstring_loaded = extension_loaded('mbstring'); @@ -232,8 +237,8 @@ return $out; } } - - + + # try to convert with custom classes if (class_exists('utf8')) $conv = new utf8(); @@ -241,6 +246,8 @@ if ($from == 'UTF-7') { if ($_str = utf7_to_utf8($str)) $str = $_str; + else + $error = true; } else if (($from == 'ISO-8859-1') && function_exists('utf8_encode')) { $str = utf8_encode($str); @@ -249,7 +256,7 @@ $conv->loadCharset($from); $str = $conv->strToUtf8($str); } - else if ($from != 'UTF-8') {} + else if ($from != 'UTF-8') $error = true; // encode string for output @@ -273,7 +280,7 @@ 'code' => 500, 'type' => 'php', 'file' => __FILE__, - 'message' => "Could not convert string charset. Make sure iconv is installed or lib/utf8.class is available" + 'message' => "Could not convert string from $from to $to. Make sure iconv is installed or lib/utf8.class is available" ), true, false); $convert_warning = true; -- Gitblit v1.9.1