2010-12-03 117 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