javaWeb项目中如何解决请求乱码的情况?

季_苗 发布于 2016/09/18 14:18
阅读 266
收藏 0


加载中
0
季_苗
季_苗

在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);

    //...

}

0
ksfzhaohui
notreami
notreami
回复 @季_苗 : ibe的网址,加载慢而已
ksfzhaohui
ksfzhaohui
回复 @季_苗 : 额,为毛我可以打开
季_苗
季_苗
你好,这个页面打不开
返回顶部
顶部