From a95e0e174c48b7c5242b8969aef99838a52c41ee Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Fri, 21 Oct 2005 08:12:23 -0400
Subject: [PATCH] Improved support for UTF-8 and other charsets

---
 program/include/rcube_shared.inc |   27 ++++++++++++++++++---------
 1 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/program/include/rcube_shared.inc b/program/include/rcube_shared.inc
index 8396f99..6874094 100644
--- a/program/include/rcube_shared.inc
+++ b/program/include/rcube_shared.inc
@@ -1032,7 +1032,7 @@
 function rcube_label($attrib)
   {
   global $sess_user_lang, $INSTALL_PATH;
-  static $sa_text_data, $s_language;
+  static $sa_text_data, $s_language, $utf8_decode;
 
   // extract attributes
   if (is_string($attrib))
@@ -1069,6 +1069,12 @@
         $sa_text_data = array_merge($sa_text_data, $labels);
       if (is_array($messages))
         $sa_text_data = array_merge($sa_text_data, $messages);
+      }
+      
+    if (isset($utf8_decoding) && $utf8_decoding==TRUE)
+      {
+      @include_once('lib/utf8.inc');
+      $utf8_decode = TRUE;
       }
       
     $s_language = $sess_user_lang;
@@ -1109,10 +1115,6 @@
   if ($text=='')
     $text = $a_text_item['single'];
 
-  // perform utf-8 decoding
-  //if (function_exists('utf8_decode'))
-  //  $text = utf8_decode($text);
-
   // replace vars in text
   if (is_array($attrib['vars']))
     {
@@ -1128,6 +1130,11 @@
 $text
 EOF;
 ");
+
+
+  // perform utf-8 decoding
+  if ($utf8_decode && function_exists('utf8ToUnicodeEntities'))
+    $text = utf8ToUnicodeEntities($text);
 
 
   // format output
@@ -1189,12 +1196,11 @@
     if (!$html_encode_arr)
       {
       $html_encode_arr = get_html_translation_table(HTML_ENTITIES);
-      $html_encode_arr["?"] = '&#150;';
       $html_encode_arr[chr(128)] = '&euro;';
       unset($html_encode_arr['?']);
       unset($html_encode_arr['&']);
       }
-    
+
     $ltpos = strpos($str, '<');
     $encode_arr = $html_encode_arr;
 
@@ -1254,8 +1260,11 @@
   {
   $charset = strtolower($charset);
   
-  if (strcasecmp($charset, 'utf-8')==0)
-    return utf8_decode($input);
+  if ($charset=='utf-8')
+    {
+    require_once('lib/utf8.inc');
+    return utf8ToUnicodeEntities($input);
+    }
   else if ($charset=="koi8-r")
     return convert_cyr_string($input, 'k', 'w');
   else if ($charset=="iso8859-5")

--
Gitblit v1.9.1