NSMutableArray UTF8(西里尔文,中文等)存储在NSString中以发送电子邮件

时间:2014-02-05 19:59:20

标签: ios utf-8 character-encoding nsstring nsmutablearray

我有一个

NSMutableArray *myArray; 

@property (strong, nonatomic) NSMutableArray *myArray;
<。>在.h文件中声明。 在.m中,myArray存储了一些(西里尔语)俄语字符,并以俄语显示在UITableView中。 HOwever,我想通过电子邮件发送,所以我添加了

- (void)viewDidLoad
    superArray=[[NSMutableArray alloc]init];


    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        return [superArray count];
    }

还有这个

NSString *emailString =[myArray description];

使用典型代码:

NSString *messageBody =  emailString; 

MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
mc.mailComposeDelegate = self;
[mc setMessageBody:messageBody isHTML:YES];

然而,它出现的情况如下:\U0425\U044d etc etc

我认为自启用HTML以来我可以添加类似的内容:

(编辑HTML)

 NSString *htmlportionBegin =@"<!DOCTYPE html> <html><head><meta charset='UTF-8'> </head><body>";
    NSString *htmlportionEnd =@"</body></html>";
   NSString *messageBody_Pre = [htmlportionBegin stringByAppendingString:emailString];
     NSString *messageBody = [messageBody_Pre stringByAppendingString:htmlportionEnd];

但这并没有改变任何事情。

任何人都知道如何让这个工作,以便应用程序中的电子邮件作曲家可以读取俄语字符?

1 个答案:

答案 0 :(得分:0)

永远不要使用description方法生成输出以供用户查看。

相反,从数组的内容构建自己的字符串。一种可能的方式是:

NSString *emailString = [myArray componentsJoinedByString:@", "]; // or use @"\n"

这将为您提供更好的输出。

如果您声明邮件正文是HTML,那么您应该在邮件正文中包含正确的HTML标记,包括htmlbody标记。