2011-03-15 73 views
0

我有以下字符ó存儲在一個MySQL數據庫的VARCHAR列。此列的排序規則是utf8_general_ciUTF-8編碼問題與數據庫和網頁上顯示

在網頁上,我有以下meta標籤:

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

然而,當數據被拉出並顯示它顯示爲:

但只在我的Mac上。

如果我有mysql_query("SET NAMES 'UTF8'");那麼它會在我的Mac上正確顯示。

在我的電腦上顯示正常,但是當我添加mysql_query("SET NAMES 'UTF8'");時,顯示不正確。

我缺少什麼?

回答

1

有很多事情可能會導致這種情況,並且您嘗試過的Web瀏覽器可能會嘗試以不同方式提供幫助或使用不同的默認值。

從MySQL手冊9.1.10. Unicode Support,SET NAMES 'UTF8'來看,如果你想要MySQL的UTF-8輸出,應該使用它。

您的內容類型看起來有點奇怪,是否是錯字?它可能應該是:

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

我會使用網絡嗅探器啓動(例如TCPViewWireshark)或其他方式來驗證來自服務器的輸出確實是UTF-8,即ó作爲0xC3 0xB3從服務器發送。如果沒問題,請檢查Content-type設置的問題。

+0

是的,字符集是一個錯字...我會看看它。謝謝。 – kylex 2011-03-16 19:20:21

+0

呵呵,當我把charset更改爲iso-8859-1時,它對兩者都有效。這是爲什麼? – kylex 2011-03-16 19:23:06

+0

除非你指定SET NAMES'UTF-8',並且該編碼中存在'ó',否則數據庫的輸出是(我猜)是用iso-8859-1編碼的。 – 2011-03-16 19:26:24