2010-12-03 8 views
1

JSON-Dataを受け取り、それを辞書に変換しています。例えばの出現箇所を置き換えるために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"]は、すでにフォーマットされたStringを返します。<b>Atemtest</b> durchführen zu müssen?

valueForKeyは同じように動作します。

+0

簡単な解決策は、サーバー側でUTF8デコードを行っていました...でも、私はまだiPhone側でこれをどうやって行うのか知りたいです。 – Infinite

答えて

1

両方の出力は、辞書内の同じNSStringオブジェクトの異なる表現です。これは、JSON内にあったものから、すでにUTF-16として再コードされていると考えられます。

this related questionへのPeter Hoseyの答えに記載されているように、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

関連する問題