使用Struts,前台提交给后台的汉字为乱码
来源:互联网 发布:apache bin httpd.exe 编辑:程序博客网 时间:2024/06/05 23:03
使用Struts,前台提交给后台的汉字为乱码
Posted on 2013-12-16 22:14 刚泡 阅读(330) 评论(0) 编辑 收藏首先产生乱码的根本原因为前台JSP页面和后台Action的编码方式不同!
- Struts的默认编码方式为UTF-8
- JSP的默认编码方式为GB18030
解决方案:
- 前后台编码方式一致;
- 结合拦截器的使用;
- 表单传输方式的指定;
只用三种方式结合使用才能根本上解决乱码问题。
1:首先指定前后台编码方式:
前台:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
后台Struts.xml配置文件:
<constant name="struts.i18n.encoding" value="UTF-8"/>
2:指定拦截器
可以自己编写拦截器也可以使用Spring提供的拦截器(用于SSH整合)。
使用Spring提供的拦截器需要在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>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
encoding:用来指定一个具体的字符集。
forceEncoding:Spring的早期版本这个参数作用很单一,当request中已经被指定了一个字符集的时候是否再将用endcoding对应的字符集设置到request中去。举个例子来说明,假如说过滤器该字段被配置为false,当请求被提交之后,过滤器会判断request.getCharacterEncoding()是否为null,如果是null那么就会进行request.setCharacterEncoding("UTF-8")的操作,如果不是null那么过滤器什么也不会做。如果被配置成了true,则每次都会进行request.setCharacterEncoding("UTF-8")的操作。
3:表单指定传输方式:
使用表单提交参数的时候一定要显示的指定传输的方式,将其指定为post方式。如果不显示指定传输方式默认为get方式,get方式会将参数拼接在URL中,而编码方式为ISO-8859-1。这种情况下(使用get方式)即使你做到了步骤1和步骤2(即统一了前后台编码方式和设置了拦截器)也仍然会出现汉字乱码的问题。除非你在后台使用如下方式对存储汉字的参数做一下处理:
String str = new String(name.getBytes("ISO-8859-1"),"UTF-8");
但是如果存储汉字的参数特别多的话,手工进行转换就很麻烦和得不偿失了。
所以一定要指定表单传输方式为POST!
综上,乱码的问题就会得以解决。
- 使用Struts,前台提交给后台的汉字为乱码
- 前台传后台汉字乱码-Tomcat
- 后台传递给前台,Json获取的值为undefined
- Extjs中用url动态传参到后台的汉字为乱码
- javaweb 后台 获取前台form提交post的参数中文乱码
- 解决前台jsp中中文提交到后台乱码问题
- 前台给后台传递参数时,乱码解决方法
- form表单提交查询条件汉字到后台乱码解决方法
- 前台传到后台的数据乱码
- js前台编码,asp.net后台解码 防止前台传值到后台为乱码
- 后台查询的数据传到前台为数据为空!导流程提交报空指针错误!
- 提交到百度汉字乱码的解决办法
- ajax提交汉字乱码的处理
- html 笔记1 (表单提交时汉字为乱码的处理)
- 前台传到后台的数据为“”
- 给tomcat设置URIEncoding避免页面提交到后台的中文字符乱码
- 使用formData给后台提交表单数据
- ajax提交汉字乱码
- java中的AES 256算法遇到 Illegal key size or default parameters错的解决办法
- !可以防止鼠标单击移动 标签 特别是动态生产的元素标签
- PAT 甲级 1048. Find Coins (25)
- 51Nod 1183 编辑距离 (DP
- Mac下配置sublime实现LaTeX
- 使用Struts,前台提交给后台的汉字为乱码
- 我的"游戏"职业生涯02
- 单例模式
- React Native 集成分享第三方登录功能分享第三方登录模块开发(iOS)
- 树查找
- 网页加载过慢的问题诊断思路
- [AGC002D]Stamp Rally-整体二分
- hdu 4424 Conquer a New Region 并查集
- 利用Construct 2制作HTML5小游戏