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

2020-02-11 04:11发布

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?

4条回答
三岁会撩人
2楼-- · 2020-02-11 04:48

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];
查看更多
唯我独甜
3楼-- · 2020-02-11 04:50

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.

查看更多
Animai°情兽
4楼-- · 2020-02-11 04:51

use

+ (id)stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc

Example:

latinStringForDisplay = [NSString stringWithCString:yourCstringHere encoding:NSISOLatin1StringEncoding];

That should do it.

查看更多
冷血范
5楼-- · 2020-02-11 04:53

Jacobs answer didn't really work for my. What did eventually work for me was to only use

[username stringByAddingPercentEscapesUsingEncoding:NSISOLatin1StringEncoding]
查看更多
登录 后发表回答