NSString编码来自字符串,如\ u00f6到UTF8

时间:2011-06-20 13:37:26

标签: cocoa

我得到一个NSStrings,其中包含 \ u00f6 等字符。我找不到如何将其编码为UTF8。

    NSString *resultString = [NSString stringWithContentsOfURL:wikiSearchURL usedEncoding:NSUTF8StringEncoding error:&err];

...谢谢

2 个答案:

答案 0 :(得分:3)

我想你想这样做:

NSString *resultString = [NSString stringWithContentsOfURL:wikiSearchURL encoding:NSUTF8StringEncoding error:&err];

usedEncoding:会告诉您解析网址时使用的编码,而encoding:会强制它使用特定的编码。

答案 1 :(得分:0)

NSString在概念上使用UTF-16作为其内容格式。 0x00F6是在NSString中找到的完全有效的字符。这是o-umlaut。如果要将字符串转换为UTF-8,请使用-UTF8String

const char* foo = [myString UTF8String];

请注意,从URL获取字符串并尝试确定使用了哪种编码的代码行是错误的。你应该使用类似的东西:

NSStringEncoding theEncoding;
NSString *resultString = [NSString stringWithContentsOfURL: wikiSearchURL usedEncoding: &theEncoding error:&err];

假设返回的字符串不是nil,theEncoding现在将包含用于将URL内容转换为字符串的编码。