javaWeb项目中如何解决请求乱码的情况?? 400 报错
在Post方式中
//第一种:对于该方法全局有效
response.setContentType("text/html;charset=GBK");
response.setCharacterEncoding("GBK");
request.setCharacterEncoding("GBK");
//第二种:只对要转码的特定字符串有效
String name= request.getParameter("name");
String encodingString = new String(name.getBytes("ISO-8859-1"),"GBK");
System.out.println(encodingString);
//第三种:为该项目配置一个过滤器,对该项目全局有效
//过滤器请看CharacterEncodeingFilter类 和 web.xml里的配置
步骤:
1.编写CharacterEncodeingFilter类(详见例子)
2.在web.xml中配置该类的servlet信息和初始化信息
GET方式访问URL时参数的编解码工作:编码/传输/解码
基本过程:
public static void main(String args[]){
String tsptString=”中文”;
//1.编码(浏览器会按网页的编码方式进行编码)
String tempString=URLEncoder.encode(tsptString,”GBK”);
//2.传输
System.out.println(tempString);
//3.解码(由Tomcat容器按照默认编码方式自动解码)
String resultString=URLDecoder.decode(tempString,”ISO-8859-1”);
//查看
System.out.println(resultString);
}
上面的方式会因为编解码方式的不统一导致乱码,可以通过下面的方式来统一编码方式:
1.客户端指定网页编码
a) 页面指定GBK方式: submit.jsp教程 中 <%@ page pageEncoding="GBK"%> ,Servelet中Response.setContentType(“text/html; charset=GBK”);
b) 浏览器指定GBK方式:在页面上右击->编码->选择新编码->GBK(无法依靠用户为你的页面指定编码,但要预防用户通过这种方法改变你的编码方式
2.服务端改变编码
a) 改变Tomcat的默认编码方式:打开tomcat下的conf文件夹下的service.xml查找8080,添加 URIEncoding='GBK',如下: <Connector port="8080" maxThreads="150" … URIEncoding='GBK' />,实例中此时第三步的默认编码方式就变成了GBK
b) 不使用TOMCAT的默认编码方式在服务器端处理参数,例如在Servlet中
protected void service(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException {
String param=arg0.getParameter("param");
//UTF-8为指定的页面编码方式,ISO-8859-1为TOMCAT的默认解码方式(URIEncoding)
param =new String(param.getBytes("ISO-8859-1"),"UTF-8");
System.out.println(param);
//...
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。