2013-09-27 50 views
0

將某些值存儲在mysql數據庫中,輸入正在用mysql_real_escape_string($value)進行消毒,並且顯示正常。但是,在對數據庫執行直接查詢時,我看到在使用此表單編輯的每個文本字段上都有â€等字符。這是如何發生的?當我在網頁上顯示值時,它不顯示,但我怎樣才能防止這些字符出現?'在mysql數據庫中的字符

我看了這個問題:Strange characters in mysql dbase似乎有一些關於在輸入上設置字符名稱的建議,但我該如何解決這個問題呢?我相信更新這些值的人是直接從Microsoft Word進行復制和粘貼的,所以我確信它與「智能引用」以及MS Word喜歡使用的其他這種花哨格式有關。

+2

請閱讀此內容http://stackoverflow.com/questions/279170/utf-8-all-the-way-through-my-web-application-apache-mysql-php –

回答

1

正如您所鏈接的答案所示,它來自PHP,默認情況下它使用latin1編碼連接到mysql。所以數據沒有被正確地插入到數據庫中。 另一個問題是,如果你在php中查詢數據,你會得到正確的數據,因爲它們被「解碼」,就像它們被編碼一樣。但是,如果您在數據庫中執行直接查詢(例如,在控制檯上使用mysql客戶端),那麼數據看起來很糟糕

這就是爲什麼答案是在其他任何事情之前查詢「SET NAMES UTF8」。 你可以通過參數mysql服務器在任何連接上強制使用utf8。我沒有看到任何其他解決方案。