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()就可以应付中文乱码问题。

  • 相关阅读:
    xml/xslt常用转义字符
    用ScriptManager实现Web服务的异步调用
    声明静态方法和实例方法的原则
    http request header 中的host行的作用
    获取客户端数据
    HTTP 处理程序(HttpHandlers)
    display与visibility
    会话管理
    ASP.NET 管道
    HttpContext, HttpRequest, HttpResponse
  • 原文地址:https://www.cnblogs.com/achengmu/p/3149579.html
Copyright © 2011-2022 走看看