springmvc 表单中文乱码解决方案

avatar 2017年09月12日22:52:34 1 2719 views
博主分享免费Java教学视频,B站账号:Java刘哥 ,长期提供技术问题解决、项目定制:本站商品点此
基本上通过在 web.xml 了配置拦截器就可以解决。

这里需要注意的是,最好把这段代码放在web.xml中开头的位置,因为拦截有顺序,如果放在后面的话容易拦截不到。

拦截器代码如下
  1. <!--post乱码过滤器-->
  2. <!-- 配置springMVC编码过滤器 -->
  3. <filter>
  4.     <filter-name>CharacterEncodingFilter</filter-name>
  5.     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  6.     <!-- 设置过滤器中的属性值 -->
  7.     <init-param>
  8.       <param-name>encoding</param-name>
  9.       <param-value>UTF-8</param-value>
  10.     </init-param>
  11.     <!-- 启动过滤器 -->
  12.     <init-param>
  13.       <param-name>forceEncoding</param-name>
  14.       <param-value>true</param-value>
  15.     </init-param>
  16. </filter>
  17. <!-- 过滤所有请求 -->
  18. <filter-mapping>
  19.     <filter-name>CharacterEncodingFilter</filter-name>
  20.     <url-pattern>/*</url-pattern>
  21. </filter-mapping>



顺便再补充其他的几个可能原因。

1、数据库和数据表不是 utf-8 编码

就在前几天,我遇到的问题正是这个。当时是刚从 windows 搬到 mac。也是在提交 post 表单的时候,中文一直是乱码,后台百度发现,原来是 navicat 的原因。就是在新建 数据库连接(注意是连接),不能选择 utf-8,应该选择默认的自动。这个地方很坑人。

数据库和数据表当然是 utf-8,一般这种情况很少出错。



2、修改 Tomcat 的 server.xml 文件,添加 utf-8 编码
  1. <Connector port="8080" protocol="HTTP/1.1"
  2.                connectionTimeout="20000"
  3.                redirectPort="8443" URIEncoding="UTF-8"
  4.                useBodyEncodingForURI="true" />



3、注意你的 IDE (如Eclipse,IntelliJ IDEA)的 jsp 文件编码,一般在右下角可以看出来,通常我们也要把默认的编码设置为 utf-8。



4、还有一种方法就是 直接对接收到的数据编码转换,我感觉有点麻烦,所以不是很喜欢
  1. String name=new String((user.getUname()).getBytes("ISO-8859-1"),"utf8");



总结:一般来说,第一种拦截器方法是可用的,要注意的是要把拦截器代码放到 web.xml 头部,防止拦截不到,还有表单一定要 post 方式提交。



本文地址:https://liuyanzhao.com/6212.html
  • 微信
  • 交流学习,资料分享
  • weinxin
  • 个人淘宝
  • 店铺名:言曌博客咨询部

  • (部分商品未及时上架淘宝)
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0