【问题标题】:What is this unicode invisible character?这个 unicode 隐形字符是什么?
【发布时间】:2013-02-28 17:55:37
【问题描述】:

在尝试解析一些 unicode 文本字符串时,我遇到了一个无法找到任何定义的不可见字符。如果我将它粘贴到文本编辑器并显示不可见的内容,我可以看到它看起来像一个项目符号 (• alt-8),通过复制/粘贴它们,我可以看到它具有类似于空格或制表符的效果,但这些都不是。

我需要测试一下,比如...

 if(uniChar == L'\t') 

但我当然需要提供一些匹配的东西。

它在 UTF-8 中有字节 0xc2 0xa0。

如果没有人有定义,有没有什么迂回的方法来测试我无法定义的东西!?

(我碰巧在 Objective-C、OSX、Xcode 中使用 NSStrings,但我认为这没有任何影响。)

【问题讨论】:

  • 它来自哪里?什么是实际字节(以及采用什么编码?)
  • 你能输出那个字符串/字符的二进制值吗?
  • 不能显示uniChar的内存内容看看里面有什么数据吗?
  • 在整数等价物旁边打印所有字符输入(使用强制转换)以找到整数等价物,这很容易检查吗?

标签: unicode character invisible


【解决方案1】:

UTF-8 中的字节 C2 A0 编码 U+00A0 ɴᴏ-ʙʀᴇᴀᴋ sᴘᴀᴄᴇ,例如,可用于单独显示组合标记。它是   作为命名的 HTML 实体。它与 U+0020 sᴘᴀᴄᴇ 几乎相同,只是它可以防止在它之前或之后换行,并充当双向布局的数字分隔符。

当您要求文本编辑器显示不可见时,您看到的点恰好是文本编辑器选择显示空格的字形。这并不意味着有问题的字符是 U+00B7 ᴍɪᴅᴅʟᴇ ᴅᴏᴛ,这绝对不是隐形的。

在代码中,如果您将其作为unichar,您可以将其与L'\x00A0' 进行比较。

【讨论】:

  • 这个答案使用了  !
  • 非常感谢您的详细回答。现在有道理了,我相信脚本最初是在网页中输入的,然后从那里复制和粘贴。
猜你喜欢
  • 1970-01-01
  • 2023-03-23
  • 2011-01-14
  • 2015-04-10
  • 2011-03-02
  • 1970-01-01
  • 2014-06-12
  • 2016-09-10
  • 2021-06-25
相关资源
最近更新 更多