如题!
此问题已经困扰我几天了,在网上也找了很多答案,,都不奏效,,
本人项目中使用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)
数据库编码方式也修改过来了。我做了以上工作,为什么还是“中文乱码”呢?我看到网上很多都是这种方式就解决了中文乱码了,但是为什么我的就不能解决呢?
此问题已经困扰我几天了,在网上也找了很多答案,,都不奏效,,
本人项目中使用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)
数据库编码方式也修改过来了。我做了以上工作,为什么还是“中文乱码”呢?我看到网上很多都是这种方式就解决了中文乱码了,但是为什么我的就不能解决呢?
mysql_query("SET NAMES 'GBK'");
以上这句话我忘了是怎么写了。论坛里面有很多这样的帖子。去php模块看看,有类似的帖子。
下一步就是你程序的处理了.. 如果你只是简单的jsp和servlet交互那么你就直接在servlet的post方法中(假定你form提交方式为post),设定request.setCharacterEncoding("UTF-8");即可取得的数据为UTF-8格式,但是插入数据库存储格式为gbk中文. struts中的话将web.xml加入楼上所示的filter.所有前台页面和后台页面都使用UTF-8编码.好的 祝你好运.