2011-01-31 248 views
0

我有用戶誰有時粘貼複製從自己的Gmail東西之後事情到我的網站的形式。這些字符在粘貼時看起來很正常,但在數據庫中它們會顯示額外的特殊字符。奇怪的字符

這裏是用特殊字符的文本的例子。 它最初發生在這個網頁: http://www.hikingsanfrancisco.com/hiker_community/scheduled_hike_event.php?hike_event_id=91

但它看起來像是誰使它已經清理了奇怪的字符。

有誰知道如何在將來阻止這種情況發生?

謝謝, 亞歷克斯

我使用PHP和MySQL

+1

很難說什麼沒有看到實際的字符... – 2011-01-31 04:49:01

回答

1

我猜你得到UTF-8編碼的文本,但您的數據庫配置爲ISO-8859-1(又名拉丁語1)。您引用的頁面說:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

所以它聲稱被編碼爲UTF-8。 UTF-8頁面上的表單將以UTF-8格式發送回服務器。然後,將該UTF-8數據發送到數據庫,並以拉丁文編碼的文本形式存儲。如果你沒有處理UTF-8到Latin-1的改變,那麼當你將數據發送回瀏覽器時,你會得到「有趣」的字符。只要文本只使用標準的ASCII字符,那麼隨着UTF-8和Latin-1在ASCII字符上重疊,所有內容都可以正常使用。

的解決方案是選擇一個字符編碼併到處使用它。我推薦到處都是UTF-8。但是,如果您的數據庫已經在Latin-1中,那麼您必須使用Latin-1或更改數據庫中的編碼並重新編碼所有數據。但是,如果數據庫中的所有文本都是簡單的ASCII,那麼不需要重新編碼。

很難說這是怎麼回事,而不例子,但字符編碼不匹配是通常的問題時,搞笑的(古怪,不好笑呵呵)字符僅出現在文本發送回瀏覽器。

+0

謝謝。幾個問題:1)如何找出我的數據庫正在使用哪個字符集? 2)如果我的數據庫使用非UTF-8字符集,那麼在非UTF字符集中編碼我的HTML表單有什麼負面影響? – Genadinik 2011-01-31 06:01:49