如题!
此问题已经困扰我几天了,在网上也找了很多答案,,都不奏效,,
本人项目中使用j2ee开发,整合struts2+Spring+hibernate,在Java程序中使用了字符过滤器,所以在进MySQL数据库之前中文都是正常的,插入数据库之后就出现了乱码,并且本人在使用本地数据库进行开发的时候是没有出现乱码的,所以程序上是没有乱码问题的。
按照网上解决方法,我已经这样做了:
1、> cp /home/mysql/support-files/my-large.cnf /etc/my.cnf;
2、vi /etc/my.cnf,
   分别在[mysqld]下添加
   default-character-set=utf8
   在[client]下添加
   default-character-set=utf8
3、重启MySQL,使用root登录MySQL命令控制台
# mysql
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       | /home/mysql/share/mysql/charsets/ |
+--------------------------+-----------------------------------+
8 rows in set (0.00 sec)mysql> show variables like '%coll%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)说明修改MySQL字符集成功吧,,4、并且,我还修改了数据库字符编码:alter database dbname character set utf8;
5、查看数据库编码方式:
mysql> show create database era360;
+----------+-----------------------------------------------------------------+
| Database | Create Database                                                 |
+----------+-----------------------------------------------------------------+
| era360   | CREATE DATABASE `era360` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.00 sec)
数据库编码方式也修改过来了。我做了以上工作,为什么还是“中文乱码”呢?我看到网上很多都是这种方式就解决了中文乱码了,但是为什么我的就不能解决呢?

解决方案 »

  1.   

    数据库的编码格式不要变,维持之前的样子。在你所有调用数据库或者显示数据库的代码中,加入以下一句:
    mysql_query("SET NAMES 'GBK'");
    以上这句话我忘了是怎么写了。论坛里面有很多这样的帖子。去php模块看看,有类似的帖子。
      

  2.   

    在连接数据库之后执行 SET NAMES 'utf8' 语句
      

  3.   

    我的项目是j2ee项目,不是PHP的,没这样的写法。。
      

  4.   

    url=jdbc:mysql://localhost:3306/scpNT?useUnicode=true&characterEncoding=utf8
      

  5.   

    http://topic.csdn.net/u/20071124/08/3b7eae69-ed1d-4a77-8895-9930bf3601af.html
      

  6.   

    我跟你说 实际上很简单 修改my.ini 找到[mysql]和[mysqld]的default-character-set=latin 改为default-character-set=gbk 这就相当于修改了mysql服务器和客户端连接通信以及储存数据的方式. 重启mysql服务控制面板里的服务里面重启.然后通过mysql>show variables like '%char%';查看修改后的字符集. 
    下一步就是你程序的处理了.. 如果你只是简单的jsp和servlet交互那么你就直接在servlet的post方法中(假定你form提交方式为post),设定request.setCharacterEncoding("UTF-8");即可取得的数据为UTF-8格式,但是插入数据库存储格式为gbk中文. struts中的话将web.xml加入楼上所示的filter.所有前台页面和后台页面都使用UTF-8编码.好的 祝你好运.