解决数据库中文乱码问题

maven工程打印sql日志

之前maven工程用的slf4j+simple,只可以打印INFO级别以上的日志,不知道怎么输出sql日志。然后各种百度,各种配置搞都搞晕了,最后还是读了官方文档,一步一个脚印slf4j手册。SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。我希望用log4j,不需要再web.xml中配置,只需要在pom.xml中引入

<dependency> 
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.8.0-alpha2</version>
</dependency>

即可。然后它会搜索resources下面的log4j.properties文件,在该文件中加上框架日志配置,持久层的框架是使用的mybatis,配置如下

log4j.logger.org.mybatis.spring=info
log4j.logger.org.apache.ibatis=info
log4j.com.mysql.jdbc.PreparedStatement=debug
log4j.logger.java.sql.ResultSet=INFO  
log4j.logger.org.apache=INFO  
log4j.logger.java.sql.Connection=DEBUG  
log4j.logger.java.sql.Statement=DEBUG  
log4j.logger.java.sql.PreparedStatement=DEBUG

这时sql日志打印到输出台,可以看到写入数据库之前中文没有乱码,说明是数据库的问题,为了进一步验证,我连接了另一个数据库,经测试在该数据库中读如中文正常,证明了是数据库配置的原因。

修改数据库的配置

使用 show variables like ‘character%’;来查看查看当前数据库的相关编码集,character_set_server=latin,这篇博客对相关配置介绍的比较详细。需要修改MYSQL安装目录在的my.ini文件,我本地的MQSQL是安装在C:\Program Files\MySQL\MySQL Server 5.5该目录下的。
需要需改两个地方:

  • [mysql]
  • default-character-set=utf8
  • [mysqld]
  • character-set-server=utf8

只需将这两处修改为utf8,但保存的过程中却遇到拒绝访问的问题。先是修改了文件的访问权限,右击my.ini文件,属性—>安全—>修改权限,还是无法保存,采取了另一种方式,先把文件拷到桌面,再进行修改再拷回源目录,会提醒说需要提供管理者权限,点确定即可。

Emoji表情字符存储

Emoji表情字符存储有问题,或者遇到保存字符串到数据库里出现\xF0\x9F\x92\x94类似问题时,请尝试使用这个工具
Emoji表情转换

总结:感觉一步一步的把遇到的问题解决还是很有成就感的,在解决的过程中也遇到自己心浮气躁的时候,其实只要静下来读读官方文档,还是很简单的。解决这个问题对我来说并不是很容易的一件事,有时候会像无头苍蝇一样,有时候又会进去了之后出不来,发散太多,导致任务的延迟。希望自己以后多多掌握解决问题的套路,快速定位解决问题,但也希望自己静下心来深入学习技术,不仅仅停留在会使用的阶段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值