我使用PHP腳本從外部將數據導入到我的數據庫MYSQL中。從查詢編碼數據庫和服務器
ALTER DATABASE DEFAULT CHARSET 'utf8';
然後編碼我的數據庫字符集爲utf8我執行的查詢通過
SHOW VARIABLES LIKE 'character_set%';
輸出到看到所有的字符集是:
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
我們可以看到character_set_database
設置到utf8
,但仍然如果我從我的PHP腳本編寫的代碼看到編碼爲
echo $charset = mysql_client_encoding($cn);
輸出是latin1
。從上面的查詢latin1僅適用於服務器。任何人都可以告訴我到底我錯過了什麼,因爲我無法將我的中文和日文字符編碼到數據庫中。
編輯
我從導入之外的數據庫具有Unicode字符作爲我的上網主頁和嶏紞鎴戠殑在中國,日本人等不同的語言。 但是,當我導入數據到我的數據庫表我得到?????而不是上面的字符。我如何編碼這些字符?它是UTF-8或16,我怎麼能識別哪個編碼將支持這些字符?
你應該更好地解釋你真正的問題,因爲'mysql_client_encoding'只返回已設置的連接時刻的字符集。 – zerkms 2012-02-22 04:41:27
mysql_set_charset()在您連接之後;另外,爲數據庫設置默認值將不會更改現有表。 – miki 2012-02-22 04:42:44
@zerkms請看到我的編輯 – Astha 2012-02-22 04:50:45