问题
I have an application that reads the data in UTF-8 format from the server, but it has to be displayed in ISO 8859-1(Latin-1). Are there any Cocoa APIs to achieve this?
回答1:
You can use NSString's getCString:maxLength:encoding: method, like this:
char converted[([string length] + 1)];
[string getCString:converted maxLength:([string length] + 1) encoding: NSISOLatin1StringEncoding];
NSLog(@"%s", converted);
Once you have this, you can then re-initialize an NSString instance from that same encoding using the stringWithCString:encoding: class method:
NSString *converted_str = [NSString stringWithCString:converted encoding:NSISOLatin1StringEncoding];
回答2:
I prefer using dataUsingEncoding:allowLossyConversion: because it doesn't require you to guess how much storage to allocate, and the returned NSData tells you how many bytes were required.
回答3:
Jacobs answer didn't really work for my. What did eventually work for me was to only use
[username stringByAddingPercentEscapesUsingEncoding:NSISOLatin1StringEncoding]
回答4:
use
+ (id)stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc
Example:
latinStringForDisplay = [NSString stringWithCString:yourCstringHere encoding:NSISOLatin1StringEncoding];
That should do it.
来源:https://stackoverflow.com/questions/4553388/convert-utf-8-encoding-to-iso-8859-1-encoding-with-nsstring