zoukankan      html  css  js  c++  java
  • jsp / get 中文乱码问题

    POST 方式下的解决方式还算简单,因为POST 方式下提交的数据都是以二进制的方式附加在http请求的body部分发送,只需要在后台指定编码格式就足矣解决。

    GET 方式下会将参数直接附加到url 后面,这部分参数无法使用request.setCharacterEncoding()处理,结果就是get形式的所有中文都变成了乱码。

    这时再也没有简便方法了,只能对这些中文一个一个进行转换,使用new String(bytes, "gb2312")进行转码。

    <% 
    String username = request.getParameter("username"); 
    byte[] bytes = username.getBytes("iso-8859-1"); 
    String result = new String(bytes, "gb2312"); 
    out.print(result); 
    %>

    如我们所见,先从request 中获得参数,接着把字符串按照iso-8859-1编码打散成byte 数组,然后用 gb2312编码组合成新字符串,最后打印出来就是正常的
    中文了。

    写在一起就变成了:

    <%=new String(new 
    String(request.getParameter("username").getBytes("iso-8859-1"), 
    "gb2312")%>

    这样做的缺点,是从请求中取得的所有中文都需要转码,非常烦琐。

    所以大家千万不要像这样<a href="test.jsp?username=测试">测试</a>,把中文参数写到超链接中,form尽量使用method="POST",这样只需要设置
    request.setCharacterEncoding()就可以应付中文乱码问题。

  • 相关阅读:
    第一次结对作业
    第一次博客作业
    个人总结
    第三次个人作业
    第二次结对作业
    第一次结对作业
    第一次个人编程作业
    第一次博客作业
    第三次个人作业——用例图设计
    第二次结对作业
  • 原文地址:https://www.cnblogs.com/achengmu/p/3149579.html
Copyright © 2011-2022 走看看