ssm项目提交数据后返回界面的中文是问号

最近自己搭建了一套SSM框架,但是中途遇到了各种各样的问题,Tomcat起服务报错,界面不能跳转,最让人头疼的是提交的是中文返回的结果是??。(我的是mysql数据库)

解决中文乱码综述:

在遇到中文乱码比如‘?’时,可以先看下面解决办法的第一步,如果按照第一步操作之后仍然未解决,接下来继续第二步,第三步以及第四步的问题排查。ps:之所以先看数据库,是因为我的tomcat配置文件server.xml,web.xml,以及mybatis连接数据库的xml都做了编码同一为utf-8。

下面主要记录自己解决乱码时的排除的方法:

第一步

1.1.检查mysql数据库的编码格式这是我在排除其他方法后的,是最终解决问题的的一个。所以我先说下关于mysql编码格式的修改。总的来说就是show create table t_user;然后复制出表结构,将所有字符集设置为utf8。具体操作细节记录如下:

 1.1 首先查看数据表的字符集:show create table t_user;

 1.2 使用语句修改数据库编码格式:alter table t_user default character set utf8;修改后发下只是修改了表的编码,但是字段的编码仍然未修改。

 1.3 接下来我简单粗暴的drop table t_user,然后重新建表,就是在建表的过程中就修改表字段的编码,如下图建表

1.4 重新建表后查询 show create table t_user;我发现字段的编码格式消失了,只有表的编码,我当时想就是有戏,果然,我再次重新插入数据时乱码消失。

第二步

2.1 检查web.xml,查看有无关于编码过滤器的处理。

<!-- 解决工程编码过滤器 -->
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

第三步:

3.1 检查mybatis连接数据库的配置文件xml,如下图:是在实例后面添加了数据库更新时的结果集设置

(?useUnicode=true&amp;characterEncoding=utf8)

注意:由于xml中的符号  & 不能被数据库系统识别,所以需要转义为 &amp 】  

第四步:

4.1 检查tomcat的配置文件server.xml,在对应端口下添加字符编码,解决在get时字符乱码的问题

 <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443"
               URIEncoding="UTF-8"/>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值