开发者

Convert UTF-8 encoding to ISO 8859-1 encoding with NSString

开发者 https://www.devze.com 2023-02-01 08:33 出处:网络
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 NSSt

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消