我做了一個備份這樣的:latin1的MYSQL和UTF8後mysqldump的
服務器A: 的mysqldump - 全數據庫-u用戶-ppwd --default-字符集= LATIN1> backup.sql
服務器B: 的mysql -u用戶-ppwd --default-字符集= LATIN1 < backup.sql
但現在,當我告訴DATAS從MySQL和PHP,我有這樣的事情: 「GA ©NA©拉爾」。
我的html頁面是latin1。我的數據庫是latin1。
如果我把utf8_decode($ mydata);我得到了正確的結果。 如何配置MYSQL使數據庫結果在latin1中?
從服務器B:
mysql> SHOW VARIABLES WHERE variable_name like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
事實上,當我使用phpMyAdmin,我可以看到在表中正確的數據。 在表中它是「Général」,但是當我用我的PHP腳本顯示數據時,我得到了「Général」。如果在PHP腳本中輸入「utf8_decode()」,則數據顯示爲「Général」。 所以我不認爲我的數據必須修復。 – user2511827
我敢打賭,你不能搜索「Général」並找到該記錄。 PhpMyAdmin使用網絡瀏覽器來顯示您的數據。瀏覽器將您的數據從編碼的latin1(例如Généal)轉換爲utf-8,因此它會正確顯示錯誤編碼的數據。在php中的utf8_decode()調用做同樣的事情。嘗試strlen()。我敢打賭,你發現長度是6,而不是8。 –