在写Android程序的时候,使用中文传递数据时,SQL查询总是得不到结果,经过调试,request.getparameter可以得到中文结果,并且输入的SQL语句经检验没有问题,而且,使用非中文的时候是没有问题的,于是我猜到了估计是数据库编码的问题,可是在sqlyog上改了半天都得不到想要的结果,搜了半天才找到是Server, Db , Client ,Conn.要全部改为utf-8,索性都改了,避免以后麻烦.印象中Windows好像没有这个问题,不知道是不是Linux下才有的.改好了之后效果立竿见影,马上见效.
在Ubuntu 下配置 MySQL 的字符编码。安装完 MySQL 后,系统默认的字符编码是 latin1 ,输入的是中文,可是输出却是一堆乱码。现在要做的就是把 MySQL的默认字符编码设置为支持中文的编码,如 GBK、GB23112、等。
首先进入MySQL存放配置文件的目录
~#cd /etc/mysql/
执行ls,查看下此文件夹下的文件
~#ls
会发现有个文件是my.cnf,这个文件是mysql的配置文件
用vim打开此文件
~#vi my.cnf
打开my.cnf后,会发现在此文件的最后有两行(此配置文件又引用了其他的两个配置文件,我们需要修改的是mysqld.cnf ,这是mysql服务端基础配置文件 ):
!includedir /etc/mysql/conf.d
!includedir /etc/mysql/mysql.conf.d
用vim打开/etc/mysql/mysql.conf.d/mysqld.cnf文件(如果提示不可编辑的话,可以切换账号为root)
~#vi /etc/mysql/mysql.conf.d/mysqld.cnf
打开文件后,在[mysqld] 的skip-external-locking下,添加character-set-server=utf8
......
[mysqld]
......
skip-external-locking
character-set-server=utf8
......
下面,我们还要去设置客户端的默认编码,我们现在进入mysql客户端配置文件目录
~#cd /etc/mysql/conf.d
~#ls
ls后,发现有个文件mysql.cnf
用vi打开,并在[mysql]下插入一行:default-character-set=utf8
~#vi mysql.cnf
[mysql]
default-character-set=utf8
最后,重启mysql 服务
~#service mysql restart
进入mysql,用s查看是否修改成功
mysql>s
......
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
......