2010-09-30 174 views
3

當我顯示數據庫中的內容時,我得到:特殊字符問題

有些工作會有。其他人會想要一個。他們是我的人,他們是我的客戶,他們被剝奪了權利。

此文本由用戶通過textarea與tinyMCE輸入。如何從句子中將特殊字符(使用preg_replace())替換爲'',但字符除外:<>?

回答

1

This article是完全值得一讀的。處理UTF-8字符是我們在某些時候經歷的事情。這個技巧似乎是在他們進入數據庫或修復數據庫之前趕上他們,以便在他們進入時他們不會被破壞。一旦他們在那裏,雖然它稍微困難一些。

+0

我已經有了 unknown 2010-09-30 01:25:13

+0

它需要的不僅僅是內容類型。問題幾乎可以肯定的是,你已經在數據庫中存儲了utf-8字符,但數據庫只接受非Unicode字符(這是默認值)。所以你在數據庫中破解了unicode。在輸出上設置你的內容類型不會使它們更容易被破壞。 – 2010-09-30 01:33:12

0

正如Chuck上面提到的那樣,這是數據庫問題。除非你只希望顯示非Unicode,即拉丁字符,那麼是的,preg_replace是要走的路。您需要足夠好地瞭解字符集以篩選出您不想要的內容。

但是,如果你只是想要一切都很好地顯示,即沒有垃圾字符,然後改變數據庫的相應部分接受utf-8。

例如如果您使用的是mySQL,請嘗試更改字段和表編碼以接受UTF-8。默認爲latin1_general_ci - 嘗試將其更改爲utf8_general_ci。希望能解釋我的觀點。