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.