如何将NSString转换为TIS-620编码的字符串

时间:2010-05-20 07:56:04

标签: iphone objective-c nsstring

在苹果文档中,我可以看到有一种方法可以将UTF8字符串转换为ASCII字符串,如下所示

NSData *asciiData = [theString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *asciiString = [[NSString alloc] initWithData:asciiData encoding:NSASCIIStringEncoding];

但我的应用需要一个TIS-620字符串才能发布到网站上,所以我尝试做同样的事情

NSData *asciiData = [newPost.header dataUsingEncoding:kCFStringEncodingMacThai allowLossyConversion:YES];
NSString *asciiString = [[NSString alloc] initWithData:asciiData encoding:kCFStringEncodingMacThai];
NSLog(@"%@", asciiString);

我得到的输出是这样的???????????。

有谁知道如何正确地将NSString转换为TIS-620? 非常感谢。

1 个答案:

答案 0 :(得分:2)

首先,TIS-620是ISO-8859-11的子集,因此您应该使用字符串编码kCFStringEncodingISOLatinThai而不是kCFStringEncodingMacThai。

此外,CF编码不能直接用于解码NSString。您需要先将CF编码转换为NS编码。

NSStringEncoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingISOLatinThai);
NSData *asciiData = [newPost.header dataUsingEncoding:enc allowLossyConversion:YES];