2011-08-16 54 views
6

完美簡單:utf8_encode($ string)用非分隔空格替換常規空格(「\ u00a0」)。我試着用str_replace過濾結果:PHP utf8_encode()將空格轉換爲非分隔空格

str_replace("\u00a0", " ", utf8_encode($string)) 

但是這並沒有解決它。

編輯:嘆氣,我是個白癡。這對utf8_encode()也不是問題。我以爲我正在使用該功能,忘記了我在代碼中禁用了它。對於AJAX請求,我的數據正在通過json_encode()運行。這是json_encode()的問題嗎?我擔心我可能會濫用Stack Overflow。我會嘗試使用谷歌搜索。

FINAL編輯:問題是數據本身,它是從Word文檔複製到MySQL表中。所有的空間都被複製爲不間斷的空格。對不起浪費大家時間。

+0

問題的存在,我怎麼能得到我的常規空格回來? –

+0

如果字符串是UTF-8編碼的,則必須替換相應的代碼單元序列,而不是代碼點本身。 –

+0

你的意見是什麼? 0xA0也是ISO 8859-1中的非破壞空間。 –

回答

12

str_replace(「\ u00a0」,「」,utf8_encode($ dat))。但是這並沒有解決它。

PHP只有字節字符串,不是原生的Unicode字符串;因此沒有\u轉義,並且您在字面意思上是要在輸入中轉換反斜槓字母-u序列。

爲了擺脫不間斷空格字符,你將不得不更換掉\xA0,或\xC2\xA0(如果轉碼後進行,以UTF-(如果在ISO-8859-1的數據,你傳遞給utf8_encode之前大概已經做了) 8)。

utf8_encode只將ISO-8859-1轉碼爲UTF-8,它不接觸空格,所以我的懷疑是你的實際數據中沒有空格。

+1

+1對你的懷疑,和我的一樣 –

0

試試這個

$str = trim($str, chr(0xC2).chr(0xA0)) 
相關問題