最新公告
  • 欢迎您光临立业阁,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • java中请求乱码解决方法_Java教程


    出现的问题:

    通过get请求向服务器发送请求时,如果请求参数为中文时,服务器端接受到的参数为乱码。

    乱码原因分析及解决办法:

    1、关于解码和编码

    编码:'中'→1110001

    解码:1110001→'中'

    乱码:编码和解码过程中使用了不同的字符集

    2、Web应用中字符编码解码的问题

    (1)请求过程:

    <1>GET请求

    浏览器端是以UTF-8进行编码,所以在服务器端也应该以UTF-8进行解码

    由于GET请求参数附着在URL地址后面,所以要统一的URL地址的解码字符集。

    解决办法:

    在tomcat配置文件server.xml中找到第一个connector加入如下属性 URIEncoding=UTF-8

    <2>POST请求

    在获取请求参数前执行:request.setCharacterEncoding("UTF-8");

    (2)响应过程

    (1)指定响应数据的编码字符集

    (2)告诉浏览器响应数据应该使用什么字符集进行解码

    <1>Tomcat服务器会自动根据“解码字符集”设置“编码字符集”

    <2>设置编码字符集:告诉浏览器当前响应数据的内容类型:response.setContentType("text/html;charset=UTF-8");需要注意的是,需要在response.getWriter();之前设置,否则无效。

    建议:

    所有的过滤器都只对POST请求起作用,在jsp页面中设置字符编码方式,都只是对表单提交时的POST请求起作用,对GET请求不能起到设置其字符编码的作用,

    在GET请求中使用的是默认的编码方式,所以对GET请求,需要在server.xml文件中设置URIEncoding="UTF-8"然后重启TOMCAT便可以实现解决中文乱码问题,

    但是不建议在href超链接请求中传达中文参数,也不建议在GET请求中传递中文参数。

    另外对传递的部分中文实现传递和接收时的统一的编码方法在传达参数时使用

    "reply.jsp?title="+java.net.URLEncoder.encode(keywords)

    然后在接收参数页面使用keywords=new String(request.getParameter("keywords").getBytes("8859_1"));这种方式虽然暂时解决了中文乱码问题,

    但是在后期的维护和部署到其他的服务器时可以仍会会出现中文乱码了问题,所以不建议使用。

    对于Post请求,只需在Servlet或者jsp中写入如下代码就可以把解决从表单中传入的中文乱码问题

     request.setCharacterEncoding("utf-8");

    了解:

    而对于Get请求,因为请求参数会被附加到地址栏的URL之后,所以不能用上面的处理方法。应该这样:

       String str=request.getQueryString();
       //使用URLDecoder解码字符串
       String str1=java.net.URLDecoder.decode(str,"utf-8");
       String[] paraStrings=str1.split("&");
        //paraStrings[0]就是第一个参数,依次类推...
       for(String paraString : paraStrings)
       {
             String[] nameValue=paraString.split("=");
             //nameValue[0]就是表单的name,nameValue[1]就是表单name对应的值
       }

    还有一种方法就是获取请求参数之后对请求参数值重新编码,也就是先将其转换成字节数组,再将字节数组重新解码成字符串。

      String str=request.getParameter("name");
      byte[] bytes=str.getBytes("ISO-8859-1");
      String name=new String(bytes,"utf-8");

    结论:传递中文参数时,最好使用POST请求来提交。不同服务器设置编码方式可能不同,不同操作系统设置编码方式也可能不同。

    推荐:java基础教程

    以上就是java中请求乱码解决方法的详细内容,更多请关注liyege.cn其它相关文章!

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    • 1170会员总数(位)
    • 111858资源总数(个)
    • 2本周发布(个)
    • 0 今日发布(个)
    • 244稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情
    冀ICP备19022365号-1 百度地图

    [email protected]

    立业阁(www.liyege.cn)免费提供wordpress主题模板、dedecms模板、帝国cms模板、小说网站源码、电影网站源码以及网络技术分享,建站源码,小说模板,电影模板,网赚教程,VPS推荐