首页 > 运维 > mysql客户程序的中文乱码问题

mysql客户程序的中文乱码问题

2007年3月30日

自mysql5.0以来,自己的客户端程序在编码问题上越来越复杂了,乱码是常见的。

一般来说,对于想使用中文的情况(包括用C写的程序或是php等),在连接上数据库之后,应该执行一下set names ‘gb2312′(或是别的编码),这时再使用中文就是正常的了。

不过今天遇到的问题源于proftpd,用proftpd与mysql相连实现用户认证,而用户的家目录也是存在数据库中的,而我们FTP的家目录中含有中文,这样mysql返给proftpd就是乱码了,无法登录。可是你有没办法让proftpd给mysql发一个set names的命令,所以问题应该这么解决。编辑/etc/my.cnf,在其中加一个[client]字段,其下加一句:default-character-set=gb2312,这样应该就没问题了,相当于本机所有的mysql客户程序都默认用gb2312去连别的数据库。你可以用mysql程序连数据库,用show variables;命令来看看编码的几项是不是已经成了gb2312。不过这样还是不甚好,因为一个机器上的客户程序还是可能连多个数据库的,如果几个数据库用的编码不同,还是不成,所以如果条件许可,还是应该在程序执行时调用set names来指定当前连接的编码。

运维 ,

  1. 目前还没有任何评论.
  1. 目前还没有任何 trackbacks 和 pingbacks.