Java Web应用乱码解决(Tomcat服务器)

转载请注明出处:jiq•钦's technical Blog  

一、引言

本人对Web编码问题研究也不是太深入,只是在Java Web开发过程中自己和别人都遇到过好几次编码问题,通过网上找了下述五个步骤做了之后100%都能解决:

 

二、解决方法:

1、对于同一个应用,最好统一编码,推荐为UTF-8,当然GBK也可以; 

 

2、正确设置JSPpageEncoding="UTF-8"

 

3、在所有的JSP/Servlet中设置:

contentType="text/html;charset=UTF-8"或response.setCharacterEncoding("UTF-8")

以间接实现对浏览器编码的设置;

 

4、对于非表单提交的geturl请求,可以修改Tomcat的默认配置:

方式1:将useBodyEncodingForURI参数设置为true(推荐方式)

方式2:将URIEncoding参数设置为 UTF-8(有可能影响其他应用,所以不推荐)。

方式3:或者用下面的方法,在接收数据时处理:

//将获得的请求参数用ISO-8859-1编码成一个字节数组

request.getParameter("userID").trim().getBytes("ISO-8859-1"))

//将刚才的字节数祖传进string的构造函数按照"utf-8"编码创建一个string对象。

String s = new String(request.getParameter("userID").trim().getBytes("ISO-8859-1"),"utf-8")

 

5、使用URLEncoder/ encodeURI URLDecoder的方法

(1)Java代码之间传递请求参数

Java代码传参前用:

//使用指定的编码机制将字符串转换为application/x-www-form-urlencoded 格式

URLEncoder.encode(username,"UTF-8");

Java代码接参数后显示用:

//使用指定的编码机制对application/x-www-form-urlencoded 字符串解码

URLDecoder.decode(request.getParameter("username"),"UTF-8");

(2)JS代码传递请求参数到Java代码

JS代码传递参数前:

//对中文参数进行双层编码后再传递

"Test.jsp?param1="+encodeURI(encodeURI(str));

Java代码接参数后显示用:

//使用指定的编码机制对application/x-www-form-urlencoded 字符串解码

URLDecoder.decode(request.getParameter("username"),"UTF-8");

 

另外建议在Eclipse->preference设置中搜索encoding,将所有编码设置为UTF-8。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值