2012-12-09 120 views
1

當我嘗試瀏覽表格或進行查詢時,PhpMyAdmin不能正確顯示字符(或者我想讓它們顯示的方式)。但是,如果'SET NAMES LATIN1;'顯示正確,包含在查詢之前。此外,使用命令行客戶端時,所有內容都可以在服務器端正確顯示我試圖將php連接排序規則設置更改爲phpMyAdmin首頁上的latin1,但它沒有效果。我不明白爲什麼會發生這種情況。這是由通信問題還是雙重編碼引起的?PhpMyAdmin不正確顯示字符

MySQL服務器的設置(命令行客戶端):

+--------------------------+----------------------------+ 
| 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/ | 
+--------------------------+----------------------------+ 

+----------------------+-------------------+ 
| Variable_name  | Value    | 
+----------------------+-------------------+ 
| collation_connection | latin1_swedish_ci | 
| collation_database | latin1_swedish_ci | 
| collation_server  | latin1_swedish_ci | 
+----------------------+-------------------+ 
+1

你能表現出你的意思是「不正確」什麼的例子嗎? –

+0

例如:lisätiedot(should belisätiedot) – Tuke

+0

檢查瀏覽器在顯示該頁面時使用的編碼。服務器可能會發送不正確的charset標題,該頁面在meta元素中設置不正確,或者使用與頁面其餘部分不同的編碼輸出搜索結果,導致瀏覽器的編碼檢測失敗。 – jasso

回答

0

添加ini_set('default_charset', 'UTF-8');查詢以上。

或者,如果你使用的mysqli:

$dbc = mysqli_connect($host, $user, $password, $database) 
    or die('Error connecting to the database'); 

if (!mysqli_set_charset($dbc, "utf8")) { 
    printf("Error loading character set utf8: %s\n", mysqli_error($dbc)); 
} else { 
    printf("Current character set: %s\n", mysqli_character_set_name($dbc)); 
} 
+0

我建議在'/ etc/my.cnf'中設置'default-character-set = utf8'。要改變你當前的數據庫:'ALTER DATABASE your_db_name charset = utf8;' – wkoot

+0

我試圖用phpMyAdmin導出數據,所以我不能在其中插入任何PHP命令。此外,由於我使用第三方託管服務,因此無法編輯my.cnf。我試圖使用cpanel mysql dump導出數據,但導出文件中的文本亂碼。這是否意味着數據庫中的數據是亂碼? – Tuke

+0

我設法使用帶有charset參數的mysqldump命令正確導出數據:'mysqldump --default-character-set = latin1'。將數據庫轉換爲utf-8後,所有內容都能正確顯示。但是,我仍然不明白爲什麼phpMyAdmin無法正常使用latin1數據庫。 – Tuke