使用NSString将UTF-8编码转换为ISO 8859-1编码
我有一个应用程序从服务器读取UTF-8格式的数据,但它必须显示在ISO 8859-1(Latin-1)中。 有没有Cocoa API来实现这个目标?
您可以使用NSString
的getCString:maxLength:encoding:
方法,如下所示:
char converted[([string length] + 1)]; [string getCString:converted maxLength:([string length] + 1) encoding: NSISOLatin1StringEncoding]; NSLog(@"%s", converted);
一旦你有了这个,你可以使用stringWithCString:encoding:
class方法从相同的编码重新初始化一个NSString
实例:
NSString *converted_str = [NSString stringWithCString:converted encoding:NSISOLatin1StringEncoding];
我更喜欢使用dataUsingEncoding:allowLossyConversion:
因为它不要求你猜测要分配多less存储空间,而且返回的NSData会告诉你需要多less字节。
雅各布的回答并没有真正为我工作。 最终为我工作的只是使用
[username stringByAddingPercentEscapesUsingEncoding:NSISOLatin1StringEncoding]
使用
+ (id)stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc
例:
latinStringForDisplay = [NSString stringWithCString:yourCstringHere encoding:NSISOLatin1StringEncoding];
这应该做到这一点。