2016-08-31 4 views
-3

Aamサーバーから長いテキストを取得していて、そのテキストに¥U201a¥U00c4¥U00f2He-Must-Not-Be-Named¥U201a¥U00c4¥U00f4という文字が含まれています。¥U201a¥U00c4¥U00f2¥U201a¥U00c4¥U00f4これをデコードする方法は?

textViewにテキストを表示すると、いくつかの異なる文字が表示されています... どのようにして目的のCに通常のテキストを表示しますか?私は、サーバーからデータを受信すると は蛇に彼のいとこダドリーをロックし、私は

infoDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 

を使用し、そのinfoDictionaryから私は

のようなテキストを取得この

で私を助けてください\ U201a \ U00c4 \ U00f4sは目の瞬きの中で捕らえられます。それぞれの杖には、すべての魔法を実行するphoenix \ U201a \ U00c4 \ U00f4s hairやdragon heartstringのような魔法の芯があります。 \ nは

そして私は

detailsTextView.text = [infoDictionary objectForKey:@"DESCRIPTION"]; 

ようTextViewにこの値を割り当てるしかし、TextViewの中で、いくつかの異なる文字を取得しています。..

+0

あなたのコードを表示することができます –

+0

これらの文字は 'Emoji'ではありません。あなたのデータはエンコードされていません。答えは正しくエンコードされたデータでのみ機能します。アプリからこれらのデータを作成していますか?それともapiから直接来ていますか? – iphonic

+0

@iphonicがapiから直接来る –

答えて

2

2つの可能性があります.1つは可能性が高く、もう1つは可能性が低いです。

JSONにデータを変換しようとすると、ごみがサーバーに送信される可能性は低くなります。

あなたが自分自身を恐怖に感じる可能性が高いほど、何も間違っていません。 \U201a\U00c4\U00f2He-Must-Not-Be-Named\U201a\U00c4\U00f4のようなものは、非ASCII文字がUTF-8でどのようにエンコードされているかを正確に示しています。たとえば、U201Aは、ユニコード文字"単一小9引用符"です。好奇心が強い場合は、MacOS Xの文字ビューアを使って文字が何であるか調べてください。 NSLogを使用する場合、同じ奇妙な文字も取得します。それらはあなたのテキストビューで完全にうまく表示されるべきです。

しかし、あなたのケースでは、\U00c4\U00f2または\U00c4\U00f4のシーケンスは非常に珍しいようです。これは、サーバーコード、または格納されている実際のデータに問題があるようです。あなたがゴミデータを与えられたなら、それについて何もできません。また、サーバー上の典型的な愚かな間違いの1つ(MacRoman文字を格納する、またはUTF-8を取り、バイトがコードポイントであると仮定して)で作成されることもありません。あなたができるのは、このデータを提供している人に連絡することだけです。

ここであなたができることがあります。方法stringByReplacingOccurencesOfString:を使用すると、ナンセンスデータを賢明なものに置き換えることができます。私が表示する文字列に\U201a\U00c4\U00f4s = ‚Äôからという文字列が現れるとは思わないでしょう。どの文字列がそこに属しているかを調べ(引用符をつけて)、それを置き換えます。したがって、NSStringに記述を取得し、stringByReplacingOccurencesOfString:を使用して、結果を使用します。これ以上の奇妙な組み合わせがあるかもしれません。

-1

stringWithUTF8String:は、「引数として* constの文字を取り、そうありません@ " シンボルが前面に表示されます。

NSString *description = [infoDictionary objectForKey:@"DESCRIPTION"]; 
NSString *str = [NSString stringWithUTF8String:description.UTF8String]; 

detailsTextView.text = str; 

あなたのTextViewにこのstrを表示します。

+0

同じエラー - Objective cのconst char * _Nonnullへの暗黙的な変換は、ARC- –

+0

では禁止されています。これはあまりにも欠けていますポイント。 – gnasher729

+1

NSStringを使用してUTF-8エンコーディングを取得し、同じUTF-8エンコーディングで文字列を作成すると、どのように役立つでしょうか?あなたはまったく同じ文字列を得るでしょう。 – gnasher729

関連する問題