I have an application that reads the data in UTF-8 format from the server, b开发者_如何学运维ut it has to be displayed in ISO 8859-1(Latin-1). Are there any Cocoa APIs to achieve this?
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];
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.
Jacobs answer didn't really work for my. What did eventually work for me was to only use
[username stringByAddingPercentEscapesUsingEncoding:NSISOLatin1StringEncoding]
use
+ (id)stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc
Example:
latinStringForDisplay = [NSString stringWithCString:yourCstringHere encoding:NSISOLatin1StringEncoding];
That should do it.
精彩评论