2011-11-10 26 views
0

我有一個奇怪的空間字符,以某種方式插入到我的數據庫中。我想知道這可能是unicode角色,但我遇到了一些問題。例如:在PHP中獲取神祕人物的ord()值

我有一個字符串「」,其中看似普通的空間是神祕人物。「然後我想知道它的值是ord(),如果我做的是echo ord(' ');,我得到194這是不正確的,我知道它是某種Unicode字符的,因爲如果我這樣做echo strlen(' ');我得到2回來。

我需要知道這個字符的Unicode值,所以我可以做一個MySQL查詢得到一勞永逸在我的數據庫擺脫它。任何幫助不勝感激。

回答

2

按照php docs,ORD()返回字符的ASCII值。如果你知道你的角色不是ASCII,這個功能不是你要找的。我會嘗試回顯該字符(確保使用UTF-8作爲連接的字符集),將其複製並粘貼到http://unicodelookup.com/以查看此字符的含義。

1

你可以嘗試運行echo '0x' . bin2hex($mystery_character);和google的結果。

搜索它在MySQL:

SELECT col FROM table WHERE col LIKE CONCAT('%', CHAR(0xc2a0), '%')

它更換常規的空間:

UPDATE table SET col = REPLACE(col, CHAR(0xc2a0), ' ')

+0

原來它是0xc2a0這是一種非破壞性的空間。所以我的下一個問題是如何使用MySQL來查詢呢? –

+0

更新了答案。 – kriz

+1

@kriz - 這種東西來自「現實世界」 - 只是在一個基礎上取代價值不是答案 - Unicode標準允許有許多不同的空間,並且只要您清理你的數據,你會發現另外一個。你的軟件更好的使用uncode,通常使用utf16或utf8。 –