|
|
|
@ -472,19 +472,11 @@ function rcmail_set_locale($lang)
|
|
|
|
|
static $s_mbstring_loaded = NULL;
|
|
|
|
|
|
|
|
|
|
// settings for mbstring module (by Tadashi Jokagi)
|
|
|
|
|
if (is_null($s_mbstring_loaded) && ($s_mbstring_loaded = extension_loaded("mbstring")))
|
|
|
|
|
{
|
|
|
|
|
$MBSTRING = array();
|
|
|
|
|
foreach (mb_list_encodings() as $charset)
|
|
|
|
|
$MBSTRING[strtoupper($charset)] = strtoupper($charset);
|
|
|
|
|
|
|
|
|
|
// add some alias charsets
|
|
|
|
|
$MBSTRING['UTF-7'] = "UTF7-IMAP";
|
|
|
|
|
$MBSTRING['WINDOWS-1257'] = "ISO-8859-13";
|
|
|
|
|
}
|
|
|
|
|
else if (is_null($s_mbstring_loaded))
|
|
|
|
|
if (is_null($s_mbstring_loaded))
|
|
|
|
|
$MBSTRING = $s_mbstring_loaded = extension_loaded("mbstring");
|
|
|
|
|
else
|
|
|
|
|
$MBSTRING = $s_mbstring_loaded = FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ($MBSTRING)
|
|
|
|
|
mb_internal_encoding(RCMAIL_CHARSET);
|
|
|
|
|
|
|
|
|
@ -1057,7 +1049,6 @@ function rcmail_message_cache_gc()
|
|
|
|
|
function rcube_charset_convert($str, $from, $to=NULL)
|
|
|
|
|
{
|
|
|
|
|
global $MBSTRING;
|
|
|
|
|
static $mb_encodings;
|
|
|
|
|
|
|
|
|
|
$from = strtoupper($from);
|
|
|
|
|
$to = $to==NULL ? strtoupper(RCMAIL_CHARSET) : strtoupper($to);
|
|
|
|
@ -1070,10 +1061,13 @@ function rcube_charset_convert($str, $from, $to=NULL)
|
|
|
|
|
return iconv($from, $to . "//IGNORE", $str);
|
|
|
|
|
|
|
|
|
|
// convert charset using mbstring module
|
|
|
|
|
if ($MBSTRING && ($mbfrom = $MBSTRING[$from]) && ($mbto = $MBSTRING[$to]))
|
|
|
|
|
if ($MBSTRING)
|
|
|
|
|
{
|
|
|
|
|
$to = $to=="UTF-7" ? "UTF7-IMAP" : $to;
|
|
|
|
|
$from = $from=="UTF-7" ? "UTF7-IMAP": $from;
|
|
|
|
|
|
|
|
|
|
// return if convert succeeded
|
|
|
|
|
if (($out = mb_convert_encoding($str, $mbto, $mbfrom)) != '')
|
|
|
|
|
if (($out = mb_convert_encoding($str, $to, $from)) != '')
|
|
|
|
|
return $out;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|