2013-02-28 152 views
3

在試圖解析一些unicode文本字符串時,我點擊了一個看不到任何定義的隱形字符。如果我將它粘貼到文本編輯器中並顯示不可見,我可以看到它看起來像一個項目符號點(•alt-8),通過複製/粘貼它們,我可以看到它具有類似空格或製表符的效果,但這些都不是。什麼是unicode隱形字符?

我需要測試它,像...

if(uniChar == L'\t') 

但當然我需要提供的東西匹配。

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

如果沒有人有定義,是否有任何迂迴的方式來測試我無法定義的東西!?

(I碰巧使用NSString的在Objective-C,OSX,Xcode中,但我不認爲有任何軸承。)

+1

它從哪裏來?什麼是實際字節(以及使用什麼編碼?) – geoffspear 2013-02-28 17:57:31

+1

您可以輸出該字符串/字符的二進制值嗎? – deceze 2013-02-28 17:57:33

+1

您不能顯示uniChar的內存內容以查看有哪些數據? – Kirby 2013-02-28 17:57:37

回答

7

字節C2 A0以UTF-8編碼U+00A0 ɴᴏ-ʙʀᴇᴀᴋ sᴘᴀᴄᴇ,其可用於例如,單獨顯示組合標記。它是 作爲一個命名的HTML實體。它幾乎與U + 0020  sᴘᴀᴄᴇ相同,只是它在它之前或之後防止換行,並且用作雙向佈局的數字分隔符。

當您要求文本編輯器顯示不可見時,您看到的點恰好是文本編輯器選擇顯示空格的字形。這並不意味着有問題的字符是U + 00B7  ᴍɪᴅᴅʟᴇ ᴅᴏᴛ,這絕對是不可見的。

在代碼中,如果您將它作爲unichar,則可以將其與L'\x00A0'進行比較。

+3

本答案使用 ! – 2013-03-01 11:16:01

+0

非常感謝您的詳細解答。我相信該腳本最初是在網頁中輸入的,並從那裏複製並粘貼。 – 2013-03-02 14:30:10