diff -x config -x po -x locale -urN ./lib/Script/sieve.php /usr/share/horde3/ingo/lib/Script/sieve.php
--- ./lib/Script/sieve.php	2004-08-17 07:11:58.000000000 +0200
+++ /usr/share/horde3/ingo/lib/Script/sieve.php	2005-07-24 02:41:09.000000000 +0200
@@ -1,4 +1,6 @@
 <?php
+require_once 'Horde/MIME.php';
+require_once 'Horde/String.php';
 /**
  * The Ingo_Script_sieve:: class represents a Sieve Script.
  *
@@ -314,10 +316,10 @@
             $vacation_addr = $vacation->getVacationAddresses();
             $vacationBlocks = array();
             if (count($vacation_addr)) {
-                $vals = array('subject' => $vacation->getVacationSubject(),
+                $vals = array('subject' => String::convertCharset($vacation->getVacationSubject(), NLS::getCharset(), "UTF-8"),
                               'days' => $vacation->getVacationDays(),
                               'addresses' => $vacation_addr,
-                              'reason' => $vacation->getVacationReason());
+                              'reason' => String::convertCharset($vacation->getVacationReason(), NLS::getCharset(), "UTF-8"));
 
                 include_once 'Horde/MIME/Headers.php';
                 $mime_headers = &new MIME_Headers();
@@ -1838,7 +1840,7 @@
         }
 
         if (!empty($this->_vars['subject'])) {
-            $code .= ':subject "' . Ingo_Script_sieve::escapeString($this->_vars['subject']) . '" ';
+            $code .= ':subject "' . MIME::encode(Ingo_Script_sieve::escapeString($this->_vars['subject']),"UTF-8") . '" ';
         }
         $code .= '"' .  Ingo_Script_sieve::escapeString($this->_vars['reason']) . '";';
         return $code;
diff -x config -x po -x locale -urN ./lib/Storage/prefs.php /usr/share/horde3/ingo/lib/Storage/prefs.php
--- ./lib/Storage/prefs.php	2004-12-27 17:14:37.000000000 +0100
+++ /usr/share/horde3/ingo/lib/Storage/prefs.php	2005-07-24 01:42:37.000000000 +0200
@@ -62,7 +62,13 @@
             break;
 
         case INGO_STORAGE_ACTION_VACATION:
-            $data = unserialize($prefs->getValue('vacation'));
+            if (!($data = @unserialize($prefs->getValue('vacation', false)))) {
+                /* Convert vacation from the old format. */
+                $data = unserialize($prefs->getValue('vacation'));
+            } elseif (is_array($data)) {
+                $data = $prefs->convertFromDriver($data, NLS::getCharset());
+            }
+
             $ob = &new Ingo_Storage_vacation();
             $ob->setVacationAddresses($data['addresses'], false);
             $ob->setVacationDays($data['days']);
@@ -125,7 +131,8 @@
             $data['ignorelist'] = $ob->getVacationIgnorelist();
             $data['reason'] = $ob->getVacationReason();
             $data['subject'] = $ob->getVacationSubject();
-            $ret = $prefs->setValue('vacation', serialize($data));
+            $data = $prefs->convertToDriver($data, NLS::getCharset());
+            $ret = $prefs->setValue('vacation', serialize($data), false);
             break;
 
         case INGO_STORAGE_ACTION_WHITELIST:
