zoukankan      html  css  js  c++  java
  • 彻底解决Spring MVC 中文乱码 问题

    1. 表单提交controller获得中文参数后乱码解决方案

    注意: jsp页面编码设置为UTF-8

    form表单提交方式为必须为post,get方式下面spring编码过滤器不起效果

      1.<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

      2.<form action="${ctx}/user/addUser" name="userForm" method="post">  

    修改web.xml,增加编码过滤器,如下(注意,需要设置forceEncoding参数值为true)

     1     <!-- Spring字符集过滤器      建议放前面 不然拦截可能有问题-->
     2     <filter>
     3         <filter-name>SpringEncodingFilter</filter-name>
     4         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
     5         <init-param>
     6             <param-name>encoding</param-name>
     7             <param-value>UTF-8</param-value>
     8         </init-param>
     9         <init-param>
    10             <param-name>forceEncoding</param-name>
    11             <param-value>true</param-value>
    12         </init-param>
    13     </filter>
    14     <filter-mapping>
    15         <filter-name>SpringEncodingFilter</filter-name>
    16         <url-pattern>/*</url-pattern>
    17     </filter-mapping>

    注意:

    数据库编码是否支持中文

    数据库表和表字段是否正确


    在配置连接数据库的参数设置修改:

    <property name="url" value="jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8"></property

     第一种情况:

    jsp页面中文输入,到controller乱码,这时候需要设置的是在web.xml文件中添加一个编码的过滤器(filter)将编码统一为UTF-8,代码如下:

    Web.xml配置文件:

        <!-- Spring字符集过滤器      建议放前面 不然拦截可能有问题-->
        <filter>
            <filter-name>SpringEncodingFilter</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>
        <filter-mapping>
            <filter-name>SpringEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

     第二种情况:

    数据库中文数据,jsp页面显示乱码(不是严格意义上的乱码,而是以问号的形式呈现)

    由于我们前后台的数据交互使用的是json数据,出现这种情况的原因我也不太清楚,之前也没遇到过,只能怪自己做过的项目太少,解决起来也不困难,只需要在转json的时候设置一下编码格式就可以了,代码如下:

      response.setContentType("application/json;charset=UTF-8");//防止数据传递乱码
     

      produces = "application/json;charset=utf-8"(springmvc)

    3、以上两步有时只能解决post方式传递参数乱码问题,get方式还是出现乱码,则就需要该tomcat的配置文件了,打开tomcat的server.xml文件,找到以下行

    1 <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

    在上面行中插入URIEncoding="UTF-8",改成如下形式:

    1 <Connector URIEncoding="UTF-8"  connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
  • 相关阅读:
    zoj 2316 Matrix Multiplication 解题报告
    BestCoder7 1001 Little Pony and Permutation(hdu 4985) 解题报告
    codeforces 463C. Gargari and Bishops 解题报告
    codeforces 463B Caisa and Pylons 解题报告
    codeforces 463A Caisa and Sugar 解题报告
    CSS3新的字体尺寸单位rem
    CSS中文字体对照表
    引用外部CSS的link和import方式的分析与比较
    CSS样式表引用方式
    10个CSS简写/优化技巧
  • 原文地址:https://www.cnblogs.com/hy-space/p/7507548.html
Copyright © 2011-2022 走看看