日期:2014-05-20  浏览次数:20807 次

mybatis连接mysql,在插入中文时,乱码,急求
本帖最后由 hbzyaxiu520 于 2012-02-20 18:25:26 编辑 mybatis连接mysql,在插入中文时,乱码,急求
首先,mysql中的数据库和表都采用的是utf-8编码
同样的表结构用ibatis就没有问题,可是换了mybatis之后,插入数据库的总是乱码
经过,调试,当执行mybatis的insert方法之前,对象的属性值都还是中文(正常的)
表结构如下:

Create Table

CREATE TABLE `BG_OPERATE_LOGS` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '流水号',
  `userId` varchar(100) DEFAULT NULL COMMENT '用户名',
  `userDisplayName` varchar(200) DEFAULT NULL COMMENT '用户显示名',
  `contentBefore` varchar(3000) DEFAULT NULL COMMENT '修改前的记录',
  `contentAfter` varchar(3000) DEFAULT NULL COMMENT '修改后的记录',
  `operation` varchar(5000) DEFAULT NULL COMMENT '执行的动作',
  `logTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '日志记录日期',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=62189 DEFAULT CHARSET=utf8


插入的数据如下:
如:?UID??1001636??????????!

另外:logback.xml打印出来的运行期SQL:
 Executing: INSERT INTO BG_OPERATE_LOGS( userId,userDisplayName,userIp, contentBefore,contentAfter,operation,action ) VALUES (?,?,?,?,?,?,? ) 
18:13:53.137 DEBUG java.sql.PreparedStatement 28 - ==> Parameters: demo(String), 测试用户(String), (String), WhiteListVo [id=0, uid=1001636](String), null, 将UID为【1001636】的玩家从白名单解除!(String), sgms:user:whiteListDelete(String)
求解决
------最佳解决方案--------------------
没用过mybatis,不过估计是mybatis的编码出了问题,看看mybatis是否有编码设置
------其他解决方案--------------------
找到答案了,
1、mysql配置文件my.ini中的两个参数全部设置为utf8
character-set-server=utf8主要由这个问题引起的!

default-character-set=utf8

2、重新安装mysql,在设置mysql编码时,选择第三个选项卡,并选择编码为utf8