Tomcat JSP提交参数中文乱码问题解决
参考:
http://blog.csdn.net/error_case/article/details/8250209
中文乱码是个老生常谈的问题,一般情况下,只要保证页面,web服务器,数据库的编码一致,很少出现中文乱码,不过最近项目中碰到了一个以前没在意过的问题,就是post提交和get提交的中文乱码处理方式不一样的问题,具体情况是这样的:为了方便,我将tomcat服务器的编码方式设置为utf-8,设置方法如下:
在tomcat的server.xml的
<Connector port="8080" protocol="HTTP/1.1"?
connectionTimeout="20000"?
redirectPort="8443"/>
节点中,加上useBodyEncodingForURI="true"这个属性,这属性的默认值 是false,另外也可以在那个节点中加上URIEncoding="UTF-8"属性。
设置后,重启tomcat,发现get方式提交的数据没中文乱码,但post提交的数据依旧存在中文乱码,通过在网上搜索一看,这样的设置只能处理get请求方式的中文乱码,不能处理post请求方式的,原因应该是get方式是将参数拼接在url中的,而post方式是将参数写在http协议的body中的;post还乱码,我在java代码中转码看了下,转码后正常,转码代码:
String a = new String(request.getParameter("a").getBytes("ISO8859_1"),"UTF-8");
从这可以看出来,tomcat服务器还是以默认编码方式提交了请求,为了改变请求提交编码方式,就需要设置request.setCharacterEncoding("UTF-8");,设置后测试,没中文乱码了,不过如果在开发中每个jsp页面这样写的话,也不太和谐,为了方便,可以制作一个filter,在处理请求前,对所有的request都设置它的编码为需要的编码方式,这样就不用在每次处理的时候来设置编码了。
-----------------------------------
hl add 20140107 很多框架都提供了类似的filter ,比如spirngmvc
<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>
---------------------
hl add 20140108 ajax, json通过post方式走filter没问题,但是如果通过get方式会出现乱码
解决方案:jsp页面拼装的时候通过encodeURI转码,java接收的时候也通过URLDecoder.decode转码
js:
var age = encodeURI($(“age”).attr(“value));
var userName = encodeURI($(“userName”).attr(“value));
var user = {userName: userName, age: age};
$.ajax({
type: “get”,
data: user
})
java:
String userName = URIDecoder.decode(user.userName);
-----------------------------------------------------------------------------------------
测试结果:
增加URIEncoding="UTF-8"属性不行,修改成URIEncoding="GBK"就可以了,不知何故。
Tomcat JSP提交参数中文乱码问题解决的更多相关文章
- 解决get方法提交参数中文乱码问题:
解决get方法提交参数中文乱码问题: 1找到你们的tomcat的目录 2在这个目录下面\tomcat61-32\tomcat61\conf 3找到server.xml ,用notepad打开(没有就下 ...
- soapUI参数中文乱码问题解决方法&soap UI工具进行web接口测试
soapUI参数中文乱码问题解决方法 可能方案1: 字体不支持中文,将字体修改即可: file-preferences-editor settings-select font 修改字体,改成能显示中文 ...
- soapUI参数中文乱码问题解决方法 (groovy脚本中文乱码)
soapUI参数中文乱码问题解决方法 可能方案1: 字体不支持中文,将字体修改即可: file-preferences-editor settings-select font 修改字体,改成能显示中文 ...
- HttpClient多文件上传代码及普通参数中文乱码问题解决
该随笔记录了在实际项目中使用HttpClient调用外部api,需上传文件和普通参数的代码. 笔者在使用 HttpClient 调用 http api 接口时,需要服务端上传文件和一些普通参数给 ht ...
- jsp页面间传递参数 中文乱码问题(zz)
jsp页面间传递参数 中文乱码问题 1.传递参数 var url = "*****Test.jsp?param1="+encodeURI(encodeURI(str));//对 ...
- Jsp页面中的中文乱码问题解决
Jsp页面中的中文乱码问题解决 在编写Jsp页面的时候,发现写入其中的中文在浏览器浏览的时候会出现乱码的情况. 出现乱码的原因分析: 因为页面中对自己的编码格式的声明和页面的实际编码格式不相同,而浏览 ...
- tomcat启动控制台中文乱码问题解决方法
tomcat启动控制台中文乱码问题解决方法,修改tomcat安装路径/conf/logging.properties文件 java.util.logging.ConsoleHandler.encodi ...
- 转:jsp页面显示中文乱码解决方案
jsp页面显示中文乱码: jsp页面的编码方式有两个地方需要设置: <%@ page language="java" import="java.util.*&quo ...
- JSP页面的中文乱码
jsp页面显示中文乱码: jsp页面的编码方式有两个地方需要设置: <%@ page language="java" import="java.util. ...
随机推荐
- Photoshop教您快速的制作标准一寸证件照教程
Photoshop教您快速的制作标准一寸证件照教程 对急需证件照的朋友,只要有一部相机,有电脑安装了PS软件,就可很快自己完成一寸照片的制作. 首先将相机卡里的照片存放在电脑硬盘里: 打开PS图片处理 ...
- 放弃iOS4,拥抱iOS5
前言 苹果在2011年的WWDC大会上发布了iOS5,不过考虑到要支持iOS4.x的系统,大多数App都无法使用iOS5的新特性.现在将近1年半过去了,从我们自己的App后台的统计数据.一些第三方 ...
- [CareerCup] 15.4 Types of Join 各种交
15.4 What are the different types of joins? Please explain how they differ and why certain types are ...
- Greenplum各种Tips(不定时更新)
Greenplum接触也有一段时间了,在使用过程中积累了一些命令,在此分享给大家. 1. 查看segment是否有切换(没有记录则没有切换) SELECT * from gp_segment_conf ...
- IOS第一天
第一天(hello world) 1>UIView所有的控件都继承UIView,倒位置,宽度和高度..UIButton UILable 2>UIViewController .h 是声明属 ...
- vmware centos6.5 net 配置
使用NAT模式 虚拟机网络连接使用NAT模式,物理机网络连接使用Vmnet8. 虚拟机设置里面——网络适配器,网络连接选择NAT模式. 虚拟机菜单栏—编辑—虚拟网络编辑器,选择Vmnet8 NAT模式 ...
- C#中的特性基本理解
定制特性可以应用的目标元素可以为:程序集(assembly).模块(module).类型(type).属性(property).事件(event).字段(field).方法(method).参数(pa ...
- List<T> 添加 DataTable
public System.Data.DataTable getDataTable() { System.Data.DataTable dt = new System.Data.DataTable() ...
- wpa supplicant 保存 wifi 设置
wpa suppliclant使用wpa gui连接wifi后,下次开机的时,不能保存,需要从新手动进行连接. 自动保存方法: 配置文件/etc/wpa_supplicant.conf 添加 upda ...
- JAVASE02-Unit02: 正则表达式 、 Object 、 包装类
正则表达式 . Object . 包装类 字符串支持正则表达式的方法一: package day02; /** * 字符串支持正则表达式的方法一: * boolean matches(String r ...