1. 程式人生 > >ubuntu mysql emma中文亂碼問題解決

ubuntu mysql emma中文亂碼問題解決

ubuntu mysql  emma中文亂碼問題解決
 
emma預設用apt-get 安裝的話,emma是不支援中文的,配置檔案或直接修改emma程式原始檔(python)。
apt-get安裝emma
sudo apt-get install emma 
 
ubuntu的apt-get 安裝emma是在/usr/share/emma目錄下面。
cd /usr/share/emma/emmalib  
sudo vim __init__.py  
找到
"db_encoding": "latin1"  
改為
"db_encoding": "utf8"  

儲存退出。

如果你已經安裝完畢並且執行過emma,程式就會建立 ~/.emma/emmarc檔案,儲存配置。所以可以更改這裡的配置檔案,或者像下面直接修改emma的python原始檔。
vim ~/.emma/emmarc   
找到
db_encoding=latin1  
改為
db_encoding=utf8  
重新執行emma,此時發現還是亂碼,在執行所有的sql語句之前加入這條sql語句,
set names utf8 
但每次新使用者都要改配置檔案,以及執行新sql前都加這個語句,豈不是很費力,直接修改emma的原始檔,來實現,新建立的emmrc配置檔案就是utf8,和當選擇資料庫時,自動的執行“set names utf8” 語句。

以後新建立的配置檔案預設就會是utf8的解碼了,我想在連線資料之後就執行 “set names utf8” 語句,所以

sudo vim /usr/share/emma/emmalib/mysql_host.py  

但是我下邊這一步沒執行成功,寫完之後,emma 就沒發啟動了, 

跳到155行左右的_use_db(self, name, do_query=True)函式哪裡,改成如下
def _use_db(self, name, do_query=True):  
        if self.current_db and name == self.current_db.name: return  
        if do_query:   
                self.query("use `%s`" % name, False)  
                self.query("set names utf8",  False)  
        try:  
                self.current_db = self.databases[name]  
        except KeyError:  
                print "Warning: used an unknown database %r! please refresh host!/n%s" % (name, "".join(traceback.format_stack()))