我有一個暫存Rails站點,它運行在MySQL 5.0.32-Debian上。utf8關於Rails的MySQL問題 - 使用utf8_general_ci編碼問題
在這個特定的網站上,我所有的表格都使用utf8/utf8_general_ci
編碼。
內部的數據庫,我有一些數據,看起來像這樣:
mysql> select * from currency_types limit 1,10;
+------+-----------------+---------+
| code | name | symbol |
+------+-----------------+---------+
| CAD | Canadian Dollar | $ |
| CNY | Chinese Yuan | å…ƒ |
| EUR | Euro | € |
| GBP | Pound | £ |
| INR | Indian Rupees | ₨ |
| JPY | Yen | ¥ |
| MXN | Mexican Peso | $ |
| USD | US Dollar | $ |
| PHP | Philippine Peso | ₱ |
| DKK | Denmark Kroner | kr |
+------+-----------------+---------+
下面是我在
在分期問題(用分貝和Rails網站上的Debian的運行框),從Rails顯示時,符號的字符顯示正確。例如,中國人民幣在我的瀏覽器中顯示爲元,而不是像數據庫中顯示的那樣。
當我將數據下載到本地OS X開發機器並在本地運行db和Rails時,我在瀏覽器中看到DB(ƒ...)中的表示,而不是字符元,正如我在分級中看到的那樣。
調試我已經做了
我保證爲Content-Type的所有標題都回來了從每個網絡服務器(地方,分期)UTF8。
我的本地mysql服務器和登臺服務器都設置爲使用utf8作爲默認字符集。在我撥打電話之前,我正在使用「set names'utf8'」。
我甚至可以從我的OS X Rails主機連接到我的臨時數據庫,而且我仍然可以看到代表元的字符。我在猜測,也許有我的MySQL本地客戶端的問題,但我無法弄清楚是什麼問題。
也許這可能借給線索
爲了使它更加混亂,如果我貼我的本地機器上的字符元到數據庫,我看到,在網頁瀏覽器的罰款。 ---如果我將同一個字符粘貼到我的臨時數據庫中,我會得到一個?從我的Staging Rails站點標記在它的頁面上。
另外,如果我在我的查詢之前使用「set names'latin1'」,則在本地OS X rails機器上,字符全部恢復正常。我確實把這些表格設置爲latin1之前 - 這可能是問題嗎?
有人請幫我出來,我瘋了試圖找出有什麼問題!
是的,這是問題。但是當你將連接設置爲latin1時,它看起來很正常,因爲它做了相同的翻譯。 我有這個問題,但無法重新創建數據庫。所以我改變了phpMyAdmin使用latin1連接,然後導出(所以導出的數據現在是正確的),然後刪除該hack並重新導入。數據已修復。詳情請見:http://omegadelta.net/2010/11/23/when-you-thought-the-db-was-utf-8-but-it-wasnt/ – 2010-11-23 04:15:33
謝謝!今天早上我正在摸索着我的腦袋,結果這是我之前創建的數據庫的解決方案! – Cymen 2011-01-14 17:38:17
只接收「訪問被拒絕」消息的Windows用戶應該將** DBNAME.sql **更改爲**%homepath%\ DBNAME.sql **,以用於mysqldump和mysql調用。並感謝Subimage! – 2012-01-11 00:13:11