Servlet中乱码的处理及理解

jsp传值到servlet中,分为set和post提交方式,在servlet中有doGet()\doPost()方法

1.使用post方式提交的,比较简单,有两种解决办法

  ①.请求和响应乱码

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //处理响应乱码
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        String userName = request.getParameter("userName");
        //处理请求乱码的第一种方式,只对post有效
        request.setCharacterEncoding("utf-8");
        out.write("用户名:"+userName+"</br>");
    }

  ②.把jsp页面传过来的值,转成字节码,再把字节码转成utf-8的字符串

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //处理响应乱码
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        String userName = request.getParameter("userName");
        //处理请求乱码第二种方式,对get、post都有效
        //可以把name转成最原始的字节码
        byte[] userNames = userName.getBytes("iso-8859-1");
        //把字节码转成utf-8的字符串
        String name1 = new String(userNames,"utf-8");
        out.write("用户名:"+name1+"</br>");
    }

2.使用get方式提交的

①.请求和响应乱码

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //处理响应乱码
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        String userName = request.getParameter("userName");
        out.write("用户名:"+userName+"</br>");
        /**
         * 如果是Tomcat8.0及以上,get请求不需要进行请求转码,因为Tomcat8.0已经隐式的进行了配置
         * 但是如果是Toncat7.0及以下,需要进行转码
         * 但是第一种方式可以使用最原始的方式转成字节码,然后在转成utf-8类型的字符串
         * 第二种方式,在service.xml中的Connector节点里面加入URLEncoding=“utf-8”即可
         * 注意:需要在本地的service.xml和eclipse的service.xml中同时配置
         *
         *
         */
    }

②.把jsp页面传过来的值,转成字节码,再把字节码转成utf-8的字符串,这个和post提交中的②一样

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //处理响应乱码
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        String userName = request.getParameter("userName");
        //处理请求乱码第二种方式,对get、post都有效
        //可以把name转成最原始的字节码
        byte[] userNames = userName.getBytes("iso-8859-1");
        //把字节码转成utf-8的字符串
        String name1 = new String(userNames,"utf-8");
        out.write("用户名:"+name1+"</br>");
    }

原文地址:https://www.cnblogs.com/yangheIT/p/11548316.html

时间: 2024-08-26 01:38:28

Servlet中乱码的处理及理解的相关文章

servlet中乱码解决

get方式 解决方式: 1. new String(string.getBytes("ISO-8859-1"),"UTF-8"); 分析:表单中文数据在页面以ISO编码后,通过Http协议传输,到达Servlet后,若以UTF-8解码,会出现乱码.所以需要先转成字节(ISO-8859-1解码,传过来的是以它编码的),再包装成字符串(UTF-8编码).Servlet中就可以显示了(UTF-8). 2. get方式就是在接收到字符串后进行转码处理 3. String n

Servlet中乱码问题

页面编码方式为utf-8 当使用post传值时 request.setContentType("utf-8"); 当使用get传值时 String str = request.getParameter("str"); str = new String(str.getBytes("iso-8859-1"),"utf-8"); 当然,直接改变Web应用服务器的编码(如Tomcat的编码). 备注:必须与页面编码一致.

servlet中的中文乱码问题

老师总会说道:学完这个知识点,我们来谈谈中文乱码问题. 乱码的问题总是无处不在,处理不好会给用户带极差的用户体验. 那么我们来记录一下servlet中的乱码问题吧! 1.服务器向客户端响应时出现的乱码问题: response.setCharacterEncoding("UTF-8");  或者response.setContentType("text/html;charset=UTF-8"); 2.客户端向服务器提交数据时出现的乱码问题:1) Post方式提交数据设

servlet中中文乱码问题

在web项目中经常回碰到中文乱码的问题,特此整理一下,有不足的地方,希望大家纠正. 1从前台往后台传数据,.以get方式发送请求,发送的参数不乱,但是后台接收到参数乱码 在Tomcat的server.xml文件中设置URIEncoding属性值为UTF-8%CATALINA_HOME%\conf\server.xml <Connector port="8888" protocol="HTTP/1.1" connectionTimeout="20000

[转]JSP或servlet中(以及上传下载文件)中文乱码或不显示的解决方案

时间 2014-04-14 14:33:44  CSDN博客 原文  http://blog.csdn.net/xby1993/article/details/23677375 主题 ServletJSP JSP或servlet中中文乱码的解决方案: 1.以POST请求方式: 在获取请求参数之前设置: request.setCharacterEncoding("utf-8"); 设置输出编码: response.setContentType("text/html;charse

处理servlet中中文乱码问题

平时coding时,经常遇到一些乱码问题,现在总结一下在使用Servlet时遇到的一些乱码问题,简单的解决办法两种 第一种简单处理方式 在servlet中数据的处理是通过request和response进行处理的,提交数据有两种方式:post+get ①post提交方式--只要事先设置request.setCharacterEncoding("UTF-8");-------注:只对POS提交有效 ②get提交方式--通过ISO8859-1得到客户端发送的数据,再转成UTF-8类型.(或

在Servlet中出现一个输出中文乱码的问题(已经解)。

在Servlet中出现一个输出中文乱码的问题,已经解. @Override public void doPost(HttpServletRequest reqeust, HttpServletResponse response) throws ServletException, IOException { //PrintWriter out = response.getWriter();在还没有给response指定编码格式时就获取了他的输出流,所以一直乱码 reqeust.setCharact

JSP/Servlet 中的汉字编码问题

1.问题的起源 每个国家(或区域)都规定了计算机信息交换用的字符编码集,如美国的 ASCII,中国的 GB2312 -80,日本的 JIS 等,作为该国家/区域内信息处理的基础,有着统一编码的重要作用.字符编码集按 长度分为 SBCS(单字节字符集),DBCS(双字节字符集)两大类.早期的软件(尤其是操作系统), 为了解决本地字符信息的计算机处理,出现了各种本地化版本(L10N),为了区分,引进了 LANG, Codepage 等概念.但是由于各个本地字符集代码范围重叠,相互间信息交换困难:软件

JSP+Servlet中使用jspsmartupload.jar进行图片上传下载

JSP+Servlet中使用cos.jar进行图片上传 upload.jsp <form action="FileServlet" method="post" enctype="multipart/form-data"> <input type="file" name="myfile"> <input type="text" name="cmt&q