2010-12-03 67 views
1

我正在接收JSON数据并将其转换为字典。 打印词典结果在下面的描述:NSDictionary objectForKey/valueForKey已经格式化了吗?

Objekt: { 
author = blub; 
authorUID = 28084; 
date = "31.07.10"; 
numVotes = 0; 
postUID = 30931; 
text = "... <b>Atemtest</b> durchf\U00c3\U00bchren m\U00c3\U00bcssen?..."; 
timestamp = 1280585555;} 

我想要的是,以取代例如在出现次数\U00c3\U00bc\U00bc

这就是我卡住的地方。 [dictionary objectForKey:@"text"]返回已格式化的字符串,如<b>Atemtest</b> durchführen zu müssen?

valueForKey的行为相同。

+0

一个快速的解决方案是在服务器端做一个UTF8解码...但我仍然想知道如何在iphone端做这个。 – Infinite 2010-12-03 15:07:56

回答

1

这两个输出都是字典中相同底层NSString对象的不同表示形式,我认为它已被重新编码为UTF-16,无论它来自JSON。

如Peter Hosey对this related question的回答所述,来自NSDictionary的输出对字符串进行编码,以便它符合plist的预期文本表示形式。在你的情况下,这听起来像你可能并不真的想回到那种表现形式(尽管如果你真的那么看看上述问题的接受答案),而是直接替换NSString的,是这样的:

NSString* oldStr = @"\u00c3\u00bc"; 
NSString* newStr = @"\u00bc"; 

NSString* text = [dictionary objectForKey:@"text"]; 
NSString* replaced = [text stringByReplacingOccurrencesOfString:oldStr withString:newStr]; 

在源代码中的\uXXXX序列将被转换成在NSString常量相关UTF-16字符,然后这些将被匹配并在目标取代。

+0

这是我的问题,使用stringByReplacingOccurences不起作用。但我认为这个问题是由相关问题回答的。 – Infinite 2010-12-03 16:00:28