使用NSString将UTF-8编码转换为ISO 8859-1编码

我有一个应用程序从服务器读取UTF-8格式的数据,但它必须显示在ISO 8859-1(Latin-1)中。 有没有Cocoa API来实现这个目标?

您可以使用NSStringgetCString: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]; 

这应该做到这一点。