MySQL中文乱码问题

游戏应用起来后,发现保存在数据库的中文记录都为乱码

可以直接这样看:

mysql -h127.0.0.1 -u root -p123456 --default-character-set=utf8

改动/etc/my.cnf

加default-character-set=utf8
如果是5.1版本后,需要改成

character-set-server=utf8

否则会报:Starting MySQL...The server quit without updating PID file [失败]lib/mysql/localhost.localdomain.pid).异常

其他属性可加为:

skip-character-set-client-handshake
init-connect='SET NAMES utf8'

重启mysql

-----------------------------参考文章

mysql5.1以上版本中文乱码的解决方法

 这几天新配了一台centos5.5服务器(64位),安装了mysql5.5版本,安装后发现存入数据库后的中文为乱码,按照以前的方式(mysql5.1以前的版本),从/usr/share/mysql目录,复制一个my-xxx.cnf到/etc/my.cnf,并将/etc/my.cnf内的mysqld段,添加上default_character_set=utf8上后,就能解决这个问题了。不过,在mysql5.5上却不行了。此时,重启mysql,问题就来了。一直会报Starting MySQL...The server quit without updating PID file [失败]lib/mysql/localhost.localdomain.pid).异常。但是只要一去掉default_character_set=utf8这句后,就又能重新正常启动。好吧,我们打开启动日志,看下到底发生了什么事情了。
       在my.cnf内添加以下代码输出err日志信息:
[safe_mysqld]
err-log = /var/log/mysqld.log
pid-file = /var/lib/mysql/localhost.localdomain.pid
在shell中输入/bin/sh /usr/bin/mysqld_safe & 启动mysql,shell输出如下:
110328 11:39:55 mysqld_safe Logging to '/var/lib/mysql/localhost.localdomain.err'.
110328 11:39:55 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
110328 11:39:57 mysqld_safe mysqld from pid file /var/lib/mysql/localhost.localdomain.pid ended
查看vi /var/lib/mysql/localhost.localdomain.err文件,终于发现了错误代码了,如下:
110328 11:26:57 [ERROR] /usr/sbin/mysqld: unknown variable 'default_character_set=utf8'
110328 11:26:57 [ERROR] Aborting
难怪一加上default_character_set选项后,就无法启动,原来mysql5.5将这个参数给去掉了。
google一把,查看官方文档后,发现在新版本中,需要使用character_set_server来代替default_character_set参数。详细可以参考:http://dev.mysql.com/doc/refman/5.5/en/server-options.html#option_mysqld_default-character-set,仔细看下这个页面,会发现原来从mysql5.1后就已经作了修改了。
因此,你要是使用mysql5.1以上版本有乱码问题,不妨试试以上的方法。
在处理解决问题的过程中,google时,发现也有不少我同样的问题的,但是大部分都是mysql5.1以前的版本解决方法。若是使用的mysql5.1以上的新版本的TX,希望以上方法能解决您的问题。Good Luck。


也可以在登录mysql的时候强制确定编码:

mysql -h 10.161.165.13 -u mgame --default-character-set=utf8 -p 


你可能感兴趣的:(MySQL中文乱码问题)