在iPhone中使用UTF-8进行编码和解码

3
我正在寻找一个示例,演示如何使用UTF-8对同一字符串进行编码和解码。编码后再解码意味着我要在两个区域中实现方法,其中一个可以进行编码,另一个可以进行解码。
我已经看过API,但并没有取得太大的成功:
- `stringWithCString:encoding:` - `stringWithUTF8String:` - `stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc;`
编辑
我有一个字符串øæ-test-2.txt,我将其编码如下:
char *s = "øæ-test-2.txt";
NSString *enc = [NSString stringWithCString:s encoding:NSASCIIStringEncoding];

但是我得到的输出是øæ-test-2.txt。现在我想要将原始字符串返回,即øæ-test-2.txt


编辑
我从服务器上得到了øæ-test-2.txt,我需要通过解码得到øæ-test-2.txt。我能够从链接http://www.cafewebmaster.com/online_tools/utf_decode得到输出。

请尝试使用该链接,您将理解我的问题。

如果有人能给一些提示、教程或指引我方向,将不胜感激。

谢谢!

2个回答

7

要将NSString对象转换为UTF8 C字符串,使用UTF8String

char *utf8string = [@"A string with ümläuts" UTF8String];

要将一个UTF8的C字符串转换成一个NSString对象,可以使用stringWithUTF8String:initWithUTF8String:

NSString *string = [NSString stringWithUTF8String:utf8string];

请注意,NSString对象是以UTF-16实现的,因此你不可能真正拥有一个“UTF-8 NSString”(而且编码应该被视为实现细节)。

你不能使用NSASCIIStringEncoding来读取UTF-8字符串(UTF-8不是ASCII)。请使用NSUTF8StringEncoding或(等效但更短的)stringWithUTF8String:。 - vicvicvic
谢谢您的回复。我同意我不应该进行任何ASCII编码。但是,我从服务器得到的响应是“øæ-test-2.txt”。我只需要以某种方式将其转换为“øæ-test-2.txt”。如果我尝试使用以下链接对UTF-decode(“øæ-test-2.txt”),我会得到“øæ-test-2.txt”。http://www.cafewebmaster.com/online_tools/utf_decode 等待您的回复。 - Ekra

2

与其

char *utf8string = [@"A string with ümläuts" UTF8String];

这应该是

const char *utf8string = [@"A string with ümläuts" UTF8String];

否则,您将遇到不兼容类型问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接