您的位置:首页 > 运维架构 > Tomcat

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

2015-07-11 20:24 411 查看
转载请注明出处:jiq•钦's technical Blog  
一、引言
本人对Web编码问题研究也不是太深入,只是在Java Web开发过程中自己和别人都遇到过好几次编码问题,通过网上找了下述五个步骤做了之后100%都能解决:
 
二、解决方法:
1、对于同一个应用,最好统一编码,推荐为UTF-8,当然GBK也可以; 
 
2、正确设置JSP的pageEncoding="UTF-8";
 
3、在所有的JSP/Servlet中设置:
contentType="text/html;charset=UTF-8"或response.setCharacterEncoding("UTF-8")
以间接实现对浏览器编码的设置;
 
4、对于非表单提交的get或url请求,可以修改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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java web Tomcat 乱码 j