2008-12-18 15 views
3

我在我的PHP項目中使用了HTML Purifier,並且無法通過用戶輸入正常工作。如何使用HTML淨化器正常運行?

我在使用一個所見即所得的編輯器(TinyMCE)在HTML的用戶進入,但只要用戶在HTML實體進入 (不間斷空格),它被保存到數據庫中,因爲這奇怪的外國字符(Â)。

不過,事情是,當我使用所見即所得的編輯器編輯保存的條目時,它會正確顯示爲 。它在顯示時也可以正常工作,只是在源代碼中顯示爲真實空間,而不是非空白字符。

此外,在MySQL數據庫中,它顯示爲怪異的外來字符。

我閱讀了關於Unicode and HTML Purifier的文檔,並將我的數據庫和網頁編碼更改爲UTF-8,但我仍然遇到非破壞性空間字符未被破壞的問題。其他HTML實體(例如&lt;&gt;)被保存爲<>,但爲什麼不是&nbsp;

+0

包裝實體和HTML代碼標籤(看我的編輯)!以防止它們被解釋爲實際的HTML。 – 2008-12-18 21:30:48

回答

3

非中斷空間不會作爲一個奇怪的外部字符保存在數據庫中,它將被保存爲兩個個字符。 Unicode非空白字符以UTF-8編碼爲0xC2 0xA0,在ISO-8859-1中它看起來像「Â」(即一個奇怪的外來字符,後面跟着一個不間斷的空格)。

您可能忘記在數據庫連接上執行SET NAMES 'utf8',這會導致PHP將其數據作爲ISO-8859-1(默認值)發送到MySQL。

查看「UTF-8 all the way through…」,瞭解如何在使用PHP和MySQL時正確設置UTF-8。

0

它也可以幫助你知道&#160;&nbsp;備用,你可能會需要如果你輸出任何人類可讀的XML)