在字符串中检测 â
Detect â in a string
我正在尝试检测 Objective C 中字符串中的字符 â
,但似乎无法正常工作。当它最终显示在屏幕上时它显示了一个项目符号点,所以也许这就是我无法检测到它的原因?
在 iOS10 中,这些项目符号点显示得比应有的大,因此我需要找到每个字符的范围并将它们缩小一些。我尝试了以下方法:
[inputString contains:@"â"]
[inputString contains:@"•"]
[inputString contains:@"\u00b7"]
[inputString contains:@"\u2022"]
最让我感兴趣的是当我从 API 回复 [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"
我也注意到一些奇怪的事情,当我编辑响应并添加更多带帽子的 a 时,它们会移动到项目符号点中,但是当我将它们添加到代码中的字符串中时,它们显示为只是要点。也许它们以某种方式被编码?虽然我在我们的代码中没有看到任何可能发生这种情况的地方,所以我对这里发生的事情有点困惑。
编辑 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",.. "|
I'm trying to detect the character â in a string
您的文本中没有“â”,因此没有检测到任何内容。 e2 97 8f
是一个项目符号,“●”。你的问题是你没有正确设置编码。
你转储中的字节e2 97 8f
是U+25CF的UTF8编码,BLACK CIRCLE。当解释为 ISO-8859 或 Windows-1252 时,e2
是 â(抑扬符),97
是破折号,8f
未使用。
这表明 JSON 本身是 UTF8 并且某处被不同地解释,可能是上述编码之一。您需要同时检查您的代码和完整的服务器响应(有关后者导致问题的示例,请参阅问题 JSON character encoding)。
我正在尝试检测 Objective C 中字符串中的字符 â
,但似乎无法正常工作。当它最终显示在屏幕上时它显示了一个项目符号点,所以也许这就是我无法检测到它的原因?
在 iOS10 中,这些项目符号点显示得比应有的大,因此我需要找到每个字符的范围并将它们缩小一些。我尝试了以下方法:
[inputString contains:@"â"]
[inputString contains:@"•"]
[inputString contains:@"\u00b7"]
[inputString contains:@"\u2022"]
最让我感兴趣的是当我从 API 回复 [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"
我也注意到一些奇怪的事情,当我编辑响应并添加更多带帽子的 a 时,它们会移动到项目符号点中,但是当我将它们添加到代码中的字符串中时,它们显示为只是要点。也许它们以某种方式被编码?虽然我在我们的代码中没有看到任何可能发生这种情况的地方,所以我对这里发生的事情有点困惑。
编辑 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",.. "|
I'm trying to detect the character â in a string
您的文本中没有“â”,因此没有检测到任何内容。 e2 97 8f
是一个项目符号,“●”。你的问题是你没有正确设置编码。
你转储中的字节e2 97 8f
是U+25CF的UTF8编码,BLACK CIRCLE。当解释为 ISO-8859 或 Windows-1252 时,e2
是 â(抑扬符),97
是破折号,8f
未使用。
这表明 JSON 本身是 UTF8 并且某处被不同地解释,可能是上述编码之一。您需要同时检查您的代码和完整的服务器响应(有关后者导致问题的示例,请参阅问题 JSON character encoding)。