关于Servlet中乱码问题

来源:互联网 发布:淘宝披露函模板 编辑:程序博客网 时间:2024/05/18 05:38
  1.                                                                                                                                                                                    request是客户端向服务器端提交请求,即从浏览器中向你的服务器发送数据,response是你的服务器端向客户端响应。在两种相应中默认都是以(ISO8859-1)进行编码。
  2.                                                                                                                                                                                  表单提交中有Post和Get方法两种,对应就有Post和Get两种请求
  3.                                                                                                                                                                                   Post请求出现问题的原因

​, 当你从客户端向服务器端提交请求时,比如在浏览器中提交中文信息时, 浏览器发送的编码方式与Request对象的编码方式不一致,  如果不进行编码转换,就会出现乱码问题,解决Post方法出现乱码比较简单

            解决方法  request.setCharacterEncoding(“UTF-8”)


但该方法只能解析请求体中的乱码方式。

4.

        Get产生乱码的原因

Get方式用  request.setCharacterEncoding(“UTF-8”)已经不能解决问题,因为Get方式是的乱码问题不在请求体中而在请求头中,此时要解决问题应该进行编码解码操作,如图

​编码: URLEncoder.encode(编码对象,”UTF-8”)

解码:String  str1 = request.getParameter("编码对象");

            String str2 = new String(str1.getBytes("ISO-8859-1"),"utf-8")

或者

              String str2 = new String( request.getParameter("具体对象") .getBytes("ISO-8859-1"),"utf-8") 

后期Get方式出现多个请求时可是一个监听器进行监听或者用方法进行封装

public class Translation


{

    public static String String(String str) throws UnsupportedEncodingException

    {

       return new String(str.getBytes("ISO-8859-1"),"UTF-8");

    }

}

Order class{

                   。。。

      String stuname= Translation .String(request.getParameter("具体对象")); 

                   。。。

5

       当要向浏览器输出所提交的中文数据时,这时应该在当前的Servlet中还要设置

                        response.setCharacterEncoding (“UTF-8”) 

                        request. setCharacterEncoding(“UTF-8”); 

以便告知浏览器打开的编码方式,只有这样才能在浏览器正确显示所需的中文。

6.

         如果在当前Servlet中通过转发转向另一个Servlet,那么对响应头的设置,会保留到转发的其他Servlet中,比如在当前 Servlet设置 request.setCharacterEncoding(“UTF-8”),在下个 Servlet中会保留这个设定,此时如果想向浏览器输出中文,只需要在转发后的Servlet中设置response.setCharacterEncoding (“UTF-8”)或者 request. setCharacterEncoding(“UTF-8”); 

7. 

         JDBC连接MySQL数据库,可能会出现乱码,所以要在连接之后加上如下的语句:

                                      useUnicode=true&characterEncoding=UTF-8


 说明:关于乱码问题经常遇到就这些,此文章还有没说明的乱码问题,仅供参考学习,不作其他用途。

原创粉丝点击