--- sogo-master/ActiveSync/SOGoMailObject+ActiveSync.m	2014-06-12 21:09:08.000000000 +0800
+++ sogo20140613/ActiveSync/SOGoMailObject+ActiveSync.m	2014-06-13 00:58:40.291509895 +0800
@@ -246,6 +246,12 @@
         d = [d dataByDecodingBase64];
       else if ([encoding caseInsensitiveCompare: @"quoted-printable"] == NSOrderedSame)
         d = [d dataByDecodingQuotedPrintableTransferEncoding];
+
+      NSString *s,*charset;
+      charset = [[[self lookupInfoForBodyPart: key] objectForKey: @"parameterList"] objectForKey: @"charset"];
+      if(![charset length]) charset = @"us-ascii";
+      s = [NSString stringWithData: d usingEncodingNamed: charset];
+      d = [s dataUsingEncoding: NSUTF8StringEncoding];
     }
 
   return d;
@@ -300,9 +306,10 @@
 
               charset = [[thePart contentType] valueOfParameter: @"charset"];
               encoding = [NGMimeType stringEncodingForCharset: charset];
-              
-              s = [[NSString alloc] initWithData: body  encoding: encoding];
-              AUTORELEASE(s);
+
+              s = [NSString stringWithData: body usingEncodingNamed: charset];     
+              //s = [[NSString alloc] initWithData: body  encoding: encoding];
+              //AUTORELEASE(s);
             }
           else
             {
@@ -396,6 +403,10 @@
     {
       if ([type isEqualToString: @"text"])
         {
+          NSString *s, *charset;
+          charset = [[[self lookupInfoForBodyPart: @""] objectForKey: @"parameterList"] objectForKey: @"charset"];
+          if(![charset length]) charset = @"us-ascii";
+          
           d = [[self fetchPlainTextParts] objectForKey: @""];
           
           // We check if we have base64 encoded parts. If so, we just
@@ -407,17 +418,13 @@
           else if ([encoding caseInsensitiveCompare: @"quoted-printable"] == NSOrderedSame)
             d = [d dataByDecodingQuotedPrintableTransferEncoding];
 
+          s = [NSString stringWithData: d usingEncodingNamed: charset];
           // Check if we must convert html->plain
           if (theType == 1 && [subtype isEqualToString: @"html"])
             {
-              NSString *s;
-              
-              s = [[NSString alloc] initWithData: d  encoding: NSUTF8StringEncoding];
-              AUTORELEASE(s);
-
               s = [s htmlToText];
-              d = [s dataUsingEncoding: NSUTF8StringEncoding];
             }
+            d = [s dataUsingEncoding: NSUTF8StringEncoding];
         }
       else if ([type isEqualToString: @"multipart"])
         {
