2016-08-23 8 views
-2

Objective Cの文字列内の文字âを検出しようとしていますが、動作させられないようです。それは最終的に画面に表示されるときに箇条書きを表示しているので、おそらく私はそれを検出できないのですか?文字列内で検出する

iOS 10では、これらの箇条書きのポイントが大きく表示されるため、これらの文字の範囲を見つけて、サイズを小さくする必要があります。

[inputString contains:@"â"] 
[inputString contains:@"•"] 
[inputString contains:@"\u00b7"] 
[inputString contains:@"\u2022"] 

最も私に興味、私はAPI応答から正確にコピーして貼り付けるときである1:[inputString contains:@"â "]を私は、次の試してみました。実際にはその文字列に4〜5個のスペースがありますが、JSONから貼り付けると切り詰められてしまいます。理由はわかりませんが、なぜ文字列が認識できないのかがわかりません。

このキャラクターを正しく扱うにはどんなアイデアですか?

編集:さらにいくつかの詳細は、こちらをAPIから返送されます文字列です:私も何か変なことに気づい

â All of your exclusive deals in one place\nâ More deals matched specifically to you\nâ Get alerts to know when new deals are available or your saved deals are expiring" 

、私は応答を編集し、帽子とそれらの以上を追加するときに、それらは箇条書きに移動されますが、コードで文字列に追加すると、単に箇条書きとして表示されます。おそらく彼らは何とかエンコードされているのでしょうか?私のコードでは、どこにそれが起こっているのか分かりませんが、私はここで何が起こっているのか少し混乱しています。

編集2:ここではラインのhexdumpに対してだ、これは私にあるよりも、おそらくあなたのいくつかのより有用である:

000026c0 6e 74 65 6e 74 22 3a 20 22 e2 97 8f 20 41 6c 6c |ntent": "... All| 
000026d0 20 6f 66 20 79 6f 75 72 20 65 78 63 6c 75 73 69 | of your exclusi| 
000026e0 76 65 20 64 65 61 6c 73 20 69 6e 20 6f 6e 65 20 |ve deals in one | 
000026f0 70 6c 61 63 65 5c 6e e2 97 8f 20 4d 6f 72 65 20 |place\n... More | 
00002700 64 65 61 6c 73 20 6d 61 74 63 68 65 64 20 73 70 |deals matched sp| 
00002710 65 63 69 66 69 63 61 6c 6c 79 20 74 6f 20 79 6f |ecifically to yo| 
00002720 75 5c 6e e2 97 8f 20 47 65 74 20 61 6c 65 72 74 |u\n... Get alert| 
00002730 73 20 74 6f 20 6b 6e 6f 77 20 77 68 65 6e 20 6e |s to know when n| 
00002740 65 77 20 64 65 61 6c 73 20 61 72 65 20 61 76 61 |ew deals are ava| 
00002750 69 6c 61 62 6c 65 20 6f 72 20 79 6f 75 72 20 73 |ilable or your s| 
00002760 61 76 65 64 20 64 65 61 6c 73 20 61 72 65 20 65 |aved deals are e| 
00002770 78 70 69 72 69 6e 67 22 2c 0d 0a 20 20 20 20 22 |xpiring",.. "| 
+0

応答文字列を表示できますか? –

+0

文字列を正規化しましたか? https://www.objc.io/issues/9-strings/unicode/#normalization-forms – Mats

+0

正規化された文字列の4つの形式をログアウトしようとしましたが、それらはすべて私のコンソールでまだ箇条書きになっています –

答えて

1

ダンプ内のバイトe2 97 8fは、U + 25CF、BLACK CIRCLEのUTF8エンコードです。 ISO-8859またはWindows-1252と解釈された場合、e2はâ(サーカンフレックス)です。97はemダッシュで、8fは未使用です。

これは、JSON自体がUTF8で、どこかがおそらく上記のエンコーディングの1つとして解釈されていることを示しています。あなたのコードと完全なサーバレスポンスの両方をチェックする必要があります(後者が問題を引き起こす例については、質問JSON character encodingを参照してください)。

+0

それを行いました!あなたの説明は私が何を見ているかについて完璧な意味を持っています、助けと明確な説明に感謝します! –

1

私は、文字列内の文字âを検出しようとしています

テキストには「â」が含まれていないため、検出することはありません。 e2 97 8fは、箇条書き文字 "●"です。問題は、エンコーディングを正しく設定していないことです。

関連する問題