mysql 5.5编码由latin1改为utf-8

来源:互联网 发布:用记事本写c语言 编辑:程序博客网 时间:2024/04/28 13:06
mysql 5.5编码由latin1改为utf-8 (2012-07-30 08:00)
标签:  mysql  的  应用程序  border  下划线  分类: MYSQL


最近重装了mysql,应用程序也修复了一些bug,然后应用程序出现了中文乱码问题。通过跟踪程序,在entity.save(obj)中,obj.title依然是正常的中文字符。最后,追踪到getHibernateTemplate().save(obj)。感觉程序应该没问题。应该是mysql出了问题。最后发现是mysql编码设置问题。这篇文章记录了修改编码的全过程。
本文最重要的一句:character_set_server=utf8 注意下划线_和-的区别。

测试环境:

centos 5.x
mysql 5.5

查看mysql版本mysql> select version(); +-----------+ | version() | +-----------+ | 5.5.25a | +-----------+ 1 row in set (0.00 sec)
查看mysql字符集:mysql> show variables like 'char%';
+--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
 # /etc/init.d/mysqld stop 

我们看到上面有几项字符集为latin1。下文主要介绍怎样修改mysql latin1编码为utf8编码。

首先,停掉mysql命令:# /etc/init.d/mysqld stop

找到mysql配置文件my.cnf 例如(/etc/my.cnf)

首先要记得备份。 备份命令:cp my.cnf my.cnfold

用vi编辑my.cnf

添加以下行到[mysqld]下面:

#collation-server=utf8_unicode_ci #ini-connect='SET NAMES utf8' character_set_server=utf8

上面我只使用了第3行,然后重启mysql问题就解决了。

重启mysql shell命令:# service mysqld start

重启如果失败,请将my.cnf还原后重启。
重启成功了!
再次查看数据库字符集,结果:

mysql> show variables like '%char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)

如果你使用的不是mysql 5.5。

可能需要参考其他资源:http://stackoverflow.com/questions/3513773/change-mysql-default-character-set-to-utf8-in-my-cnf

mysql 5.5编码由latin1改为utf-8

原创粉丝点击