2011-01-13 40 views
1

在進一步的文字,我會參考一些字符作爲正確的UTF字符,這是UTF-8編碼的字符在它的確定形式(á)和不正確UTF字符,這是相同的,但搞砸了utf-8字符(例如顯示爲ý)。奇怪的UTF-8甲基苯丙胺問題

所以,有CMS上運行MAMP - 這是本地開發的網站,客戶端。現在,在管理中,我輸入正確的utf-8字符。在本地主機上瀏覽時,它顯示爲正確的utf-8字符。但是,在utf-8編碼的mysql中,它顯示爲不正確的utf-8字符(在Sequel Pro/phpMyAdmin中)。

當數據庫被轉移到臨時/ dev的服務器,這在MAMP工作非常相同的DB,停止工作,並顯示爲不正確的 - 就像他們在MAMP輸入。

不過,如果我打開臨時服務器,輸入正確的字符在管理(非常相同的代碼),他們不僅顯示正常,但他們也保存在MySQL作爲正確的字符。

實際上,我震驚了 - 非常相同的代碼,非常相同的數據庫,它仍然以不同的方式表現。

你有沒有發現類似的東西,即你能饒了我的認真細緻地翻着幾百萬不同的切入點,其中UTF-8可以搞砸了的痛苦。

P.S:我認爲這可能是甲基苯丙胺相關的(奇怪的UTF-8的設置),而不是嚴格的應用程序相關。 P.S .:應用程序使用MySQLi,每個文件都是UTF-8編碼:/唯一不同的是,在mamp上我只使用host/user mysql連接,而在分段db套接字引入時。

謝謝。

+1

查看服務器和客戶端的默認編碼設置。例如,在連接到數據庫以在運行時設置客戶端編碼後,您可以在代碼中運行「SET NAMES utf8」。 – Fanis 2011-01-13 20:40:53

回答

3

我實際上經歷過這幾次。我做了以下工作來解決它。

當我連接到數據庫:

mysql_query("SET NAMES 'utf8'", $db_con); 

在每個頁面的頂部:

header('Content-Type: text/html; charset=utf-8'); 

如果你想成爲真正的迂腐,與任何形式的使用發佈數據:

<form accept-charset="utf-8"></form> 
+0

是的,這樣做(如果你只是寫了一點:) – 2011-01-13 23:43:56