Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2537441
  • 博文数量: 245
  • 博客积分: 4125
  • 博客等级: 上校
  • 技术积分: 3113
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-25 23:56
文章分类

全部博文(245)

文章存档

2015年(2)

2014年(26)

2013年(41)

2012年(40)

2011年(134)

2010年(2)

分类: Mysql/postgreSQL

2012-07-30 08:00:00

最近重装了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%'; # /etc/init.d/mysqld stop +--------------------------+----------------------------+ | 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/ | +--------------------------+----------------------------+

我们看到上面有几项字符集为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。

可能需要参考其他资源:

阅读(3157) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~