Emma 中文乱码的解决办法


在Linux如果使用mysql的图形客户端,我感觉Emma算一个好用的了。

比起mysql自己的Mysql Query Browser 要好, 而且最不能忍受的是Mysql Query Browser 在Ubuntu11.10 会有程序崩溃现象。

相比而言emma是挺好,但是emma默认用apt-get 安装的话,emma是不支持中文的,这个需要自己修改一下了配置文件,或者直接修改emma程序源文件了(emma 用python编写的)。

apt-get安装emma

  1. sudoapt-getinstallemma

如果你已经安装完毕并且运行过emma,程序就会创建 ~/.emma/emmarc文件,保存你自己的一些配置。所以可以更改这里的配置文件,或者像下面直接修改emma的python源文件。

  1. vim~/.emma/emmarc

找到

  1. db_encoding=latin1

改为

  1. db_encoding=utf8

然后里,重新运行emma,此时发现还是乱码,不要着急,在执行所有的sql语句之前加入这条sql语句,

  1. setnamesutf8

按ctrl+enter执行之后,再看看是不是已经ok了。正常显示中文了。(这里还有一个前提是你的数据库都是utf8编码的哟)

好了,但是每次新用户都要改配置文件,以及执行新sql前都加这个语句,岂不是很费力。而自己有很懒,并且我的数据库大部分都是utf8的,所以直接修改emma的源文件,来实现,新创建的emmrc配置文件就是utf8,和当选择数据库时,自动的执行“set names utf8” 语句。

ubuntu的apt-get 安装emma是在/usr/share/emma目录下面。

  1. cd/usr/share/emma/emmalib
  2. sudovim__init__.py

找到

  1. "db_encoding":"latin1"

改为

  1. "db_encoding":"utf8"

保存退出。以后新创建的配置文件默认就会是utf8的解码了,我想在连接数据之后就执行 “set names utf8” 语句,所以

  1. sudovim/usr/share/emma/emmalib/mysql_host.py

跳到155行左右的_use_db(self, name, do_query=True)函数哪里,改成如下

  1. def_use_db(self,name,do_query=True):
  2. ifself.current_dbandname==self.current_db.name:return
  3. ifdo_query:
  4. self.query("use`%s`"%name,False)
  5. try:
  6. self.query("setnamesutf8",False)
  7. self.current_db=self.databases[name]
  8. exceptKeyError:
  9. print"Warning:usedanunknowndatabase%r!pleaserefreshhost!\n%s"%(name,"".join(traceback.format_stack()))

自己看着改,反正改成上面的样子,注意空格,因为python是以空格当语句的分割语法的。

其实就是加了一句

长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn