請選擇 進入手機版 | 繼續訪問電腦版

老爹隨筆私塾

找回密碼
立即註冊
搜索
熱搜: 攝影 CentOS Discuz
老爹隨筆私塾 首頁 技術文件 查看內容

解決phpmyadmin亂碼問題

2012-5-29 10:49| 發佈者: admin| 查看: 4574| 評論: 0|原作者: MaYaSunLight

摘要: Linux中的MySQL預設的編碼方式是latin1 如果安裝後都沒去動設定,應該都還是這個東西 想要確定自己的MySQL的編碼設定的話 可以在phpMyAdmin的首頁,點「顯示 MySQL 系統變數 」去看 應該可以看到好幾個latin1_germ ...
Linux中的MySQL預設的編碼方式是latin1
如果安裝後都沒去動設定,應該都還是這個東西

想要確定自己的MySQL的編碼設定的話
可以在phpMyAdmin的首頁,點「顯示 MySQL 系統變數 」去看

應該可以看到好幾個latin1_german1_ci、latin1_swedish_ci、latin1之類的東西
那就是亂碼的原因

以下修正方法是去修改phpmyadmin的寫入、讀出設定,讓顯示恢復正常


找到自己電腦中的
phpMyAdmin/libraries/select_lang.lib.php
這個檔案

找到$GLOBALS['mysql_charset_map'] = array (
......(中略).....
);
這一大段

將裡面的:
'utf-8' => 'utf8',
改成:
'utf-8' => 'latin1',

'big5' => 'big5',
改成:
'big5' => 'latin1',

改完之後,只要重新整理網頁,就能讓顯示、匯出的檔案正常。


從Linux移機到Windows的方法

從CentOS匯出的sql檔,看起來很至正常,沒有亂碼
但是匯入到Windows的資料庫(編碼UTF8)時,依然變成亂碼
這是因是sql檔的開頭多了這幾句:

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES latin1 */;

這幾行指令,會設定匯入資料庫檔案的文字編碼
把這幾行刪掉,匯入的資料,顯示就會正常了

以下是閒聊
20110629_e13b280e34a464b121e7aw6rPJRGKBXl.jpg

看上面的圖,兩個表格都是同一個資料表
只是開啟資料庫的軟體不同

在這表格中,第一、三筆資料是中文,第二、四筆是對照用的英文數據

第一、二筆是尚未修改select_lang.lib.php時,就用phpmyadmin新增進去的資料
第三、四是修改select_lang.lib.php過後,才輸入進去的資料

資料庫本身是有編碼沒錯,但是寫入跟讀出時,都可以指定編碼方式
只要指定的編碼方式一致,就能讀的出來
就像我們在CentOS上裝XOOP時,phpmyadmin中是亂碼,但是XOOP卻顯示正常一樣
自己在輸入第三、四筆資料後,曾把select_lang.lib.php改回原本的設置
那亂碼亂的方式就跟Navicat Lite一致

但如果指定錯誤的話....那大概就像第一筆資料那樣吧....
完全救不回來了 QQ

治本的方式可能還是要去修改/etc下的MySQL設定檔吧...
語系可以調整,只是我還沒搞懂那個東西

Archiver|手機版|oldpa.tw 老爹隨筆  

GMT+8, 2019-2-22 16:20 , Processed in 0.189457 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回頂部