如何解决Java WEB应用中的乱码问题(2)

  为此,方案之一可以在JSP网页上使用脚本化语言进行URLEncoding处理。如:

view plaincopy to clipboardprint?
<%@page import="Java.net.URLEncoder"%>  
<a href="https://www.linuxidc.com/hello/checkUser.html?opt=<%=URLEncoder.encode("中文", "UTF-8")%>">使用者身份验证</a>  


   request-body的编码处理

  request-body只有在POST提交的方式下才会产生。request-body的编码方式由表单的enctype标签属性指定,同request-line一样,编码request-body时使用的字符集也是当前网页在浏览器上显示时所使用的字符集。request-body的编码过程由客户端浏览器自动完成,不需要额外的编程处理。

  服务器的处理

  相对于用户端,服务器端在接收到HTTP请求时提供了两种处理请求数据的方式:自动处理与不处理。

  服务器一般会自动处理application/x-www-form-urlencoded类型的数据(包括request-line及request-body中的数据),就servlet(Servlet类或JSP网页)而言,可以通过request对象的getParameter()或getParameterValues()取得这些数据。对于除此以外的其它MIME类型的数据,HTTP服务器则是将处理的过程直接交到了与HTTP请求相对应的servlet(Servlet类或JSP网页)身上。

  例如用户端有以下表单被提交:


view plaincopy to clipboardprint?
<form action="checkUser.html?opt=xxx" method="POST">     
    <input type="text" value="yyy"/>     
    <input type="text" value="zzz"/>     
    <inupt type="submit" value="submit"/>     
</form>  

  表单提交时经服务器端自动处理后与checkUser.html相对应的servlet(Servlet类或JSP网页)可以通过下面的方式取得数据:


    String opt = request.getParameter("opt");
  String[] users = request.getParameterValues("username");
  String opt = request.getParameter("opt");
  String[] users = request.getParameterValues("username");


  默认情况下,服务器对于接收到的application/x-www-form-urlencoded类型数据进行字符集为ISO-8859-1的URLDecoding处理,经过处理之后的字符串内码为ISO-8859-1。对于没有附加任何设置的HTTP服务器而言,我们的servlet在取得数据之后必须进行相应的解码处理,生成内码为UTF-16(unicode)的字符串。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwpdjw.html