2011-10-17 84 views
2

我一直使用php + mysql(phpmyadmin)來構建中文內容(utf-8)很長一段時間的網站。Mysql顯示中文字符

當輸入表格,並且從db生成輸出php時,漢字顯示效果良好;但是當我查看數據庫時,儘管有時它們是普通的中文字符,但它們卻不是(成爲奇怪的字符串),這讓我注意到,mysql處理和輸入數據的方式並不總是utf-8。

有網站上的一些專家提到,mysql被用來記錄latin1輸入的數據;然而,我注意到,phpmyadmin中現有的字符集是UTF-8 ...

有沒有可靠的方法來檢測出現在phpmyadmin表格單元格中的中文字符的編碼格式?

此外,除了在頁面的標題處提及,還會有任何方法,以便我可以確保輸入到數據庫的數據是utf-8而不是其他數據?

謝謝。

+2

檢查phpMyAdmin的連接編碼,phpMyAdmin的顯示編碼一起。他們是否設置爲utf-8? – ikromm

+0

如果您在創建表時定義了字符集utf8,並且您還應用了mysql_set_charset('utf8',$ con);當連接到MySQL然後它應該工作。至於在某些客戶端沒有正確顯示John的評論對我來說似乎合乎邏輯,可以完成這項工作。 – Melsi

+0

嗨,讓我告訴你輸入到db的「utf-8」內容,我從單元格複製了這些內容: – Ham

回答

5

人們在這方面遇到的最大問題是,他們不告訴MySQL他們在連接到數據庫時發送/期待UTF-8編碼數據,所以MySQL認爲它應該處理latin1編碼數據並且相應地轉換它。連接到數據庫後使用mysql_set_charset發出命令SET NAMES utf8

+0

mysql_select_db($ database_conn_impossible,$ conn_impossible); $ set_charset ='SET NAMES utf8'; mysql_query($ set_charset,$ conn_impossible); – Ham

+0

對不起,在連接文件中,我已經包含了上述內容,它會是您提到的第一種方式嗎?另外,我應該在哪裏應用mysql_set_charset?謝謝。 – Ham

+0

好的,那麼這個解決方案不適用。刺入黑暗中...... :)'mysql_set_charset'本質上與'SET NAMES'完全相同。 – deceze

0
在我的情況

,難道僅僅是因爲htmlentities();解決辦法是改變echo htmlentities($email_db);echo htmlentities($email_db, ENT_COMPAT, 'UTF-8');