在苹果文档中,我可以看到有一种方法可以像这样从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 吗? 非常感谢。
首先,TIS-620 是 ISO-8859-11 的子集,因此您应该使用字符串编码 kCFStringEncodingISOLatinThai 而不是 kCFStringEncodingMacThai。
此外,CF 编码不能直接用于解码 NSString。您需要先将CF编码转换为NS编码。
NSStringEncoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingISOLatinThai);
NSData *asciiData = [newPost.header dataUsingEncoding:enc allowLossyConversion:YES];
非常感谢你,在尝试在屏幕上显示一些泰语文本从字节数组返回 NSString 后,我也遇到了这个问题,下面是我编写的代码
NSData* temp = [NSData dataWithBytes:pbRecvBuffer length:pcbRecvLength];
NSString *string = [[NSString alloc] initWithData:temp encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingISOLatinThai)];