SpringMVC 中文乱码问题


前言

今天在用 SpringMVC 写 Demo 时遇到了中文乱码问题,前端的中文数据传递到 Controller 能够正常解析。但是到了数据库里面就成了 ?????? 一堆的问号。在网上找了很多方法都没成功我就很纳闷,好在最后我通过尝试解决了问题。


一、问题分析

由于和在前几天在用 HttpServlet 那一套写代码时用的同一个数据库的同一张表,所以不是数据库的编码出问题了。而在 Controller 中能够正常解析,所以也不是 Tomcat 中的编码问题。那范围就很小了,配置数据源的时候可能出现了问题。
在没用 SpringMVC 的时候是通过 Mybatis 的 xml 文件配置的数据源

<dataSource type="POOLED">
    <property name="driver" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/数据库名?useUnicode=true&amp;characterEncoding=utf-8"/>
    <property name="username" value="root"/>
    <property name="password" value="********"/>  
</dataSource>

我想都没想直接把这个 Url 里面的值给复制然后粘贴到了 jdbc.properties 文件里面

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/数据库名?useUnicode=true&amp;characterEncoding=utf-8
jdbc.username=root
jdbc.password=********

这也没问题啊,可是我在测试接口时写回数据库的中文成了 ???? 下面来看看到底是哪里出现了问题。


二、解决方法

很简单,那就是在 url 中直接写 & 符号,而不是用 &amp; 去转义,这就涉及到 properties 文件书写的一些规范了(可自行查阅)。

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=********

总结

最后好在成功解决,遇到此类问题应该先去分析哪个环节出现了问题,再去多尝试就能解决问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值