我是靠谱客的博主 魁梧钢笔,最近开发中收集的这篇文章主要介绍java实现Servlet的中文乱码处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

HttpServletRequest:这个对象封装了客户端提交过来的一切数据

客户端提交数据给服务端(这里指的是在网页输入内容提交servlet处理时,在servlet控制台的输出乱码),如果数据中带有乱码,可参照如下方法解决:

  1. 如果是GET请求(若无乱码则无需修改)
    String name=request.getParameter("username");
    String password=request.getParameter("password");
    System.out.println("名字是:"+name+",密码是:"+password);
    //get请求过来的数据,在url上已近经过编码了,所以我们渠道的是乱码
    //tomcat收到这些数据后,getParameter默认使用"ISO-8859-1"去解码
    //先让文字回到"ISO-8859-1"对应的字节数组,然后按"utf-8"拼接字符串
    String username=new String(name.getBytes("ISO-8859-1"),"utf-8");
    System.out.println(name+"="+username);

    或者可以在tomcat目录下conf下的server.xml中8080端口下添加     URIEncoding="UTF-8"

    <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443"
    URIEncoding="UTF-8"/>

     

  2.  如果是POST请求(若无乱码则无需修改),一定要写在POST方法获取数据之前设置字符编码(第一句就行)

    
    //这个说的是设置请求体里面的文字编码,get请求设置无效,因为get请求的数据在地址栏中,请求体是空的
    request.setCharacterEncoding("utf-8");
    String name=request.getParameter("username");
    String password=request.getParameter("password");
    System.out.println("名字是:"+name+",密码是:"+password);

     

HttpServletResponset:负责返回数据给服务端:输出文字两种方法都可以,但是输出文件就不能用字符流了。


//以字节流的方式写出
response.getOutputStream().write("kook你".getBytes());

//向客户端输出,以字符流的方式写出
PrintWriter pw=response.getWriter();
pw.write("okokokk好好好");

中文乱码的解决:

  1. 如果是字符流输出(有时候设置“utf-8”输出还是乱码,可以改变一下浏览器的编码格式):
    
    //这里写出去的文字,默认使用ISO-8859-1,我们可以指定写出去的时候,用什么编码写
    //
    1.指定输出到客户端时,这些文字使用 UTF-8
    编码
    response.setCharacterEncoding("UTF-8");
    //
    2.直接规定浏览器看到这份数据的时候,使用什么编码来看
    response.setHeader("Content-Type","text/html;charset=UTF-8");
    response.getWriter().write("大家好啊");

     

  2. 如果是字节流输出 

    //以字节流输出
    /*
    *
    如果想让服务器端出去的中文,能够在客户端正常显示,只需要确保一点
    *
    出去的时候使用的编码,和客户端看这份数据的时候使用的是编码是一致的
    *
    默认情况下getOutputStream()输出使用的是UTF-8的码表
    *
    如果要改变编码,"我是个中国人".getBytes()在括号中填写编码
    */
    //设置浏览器响应的数据类型是html文本,并告知浏览器,使用UTF-8来编码
    response.setContentType("text/html;charset=utf-8");
    response.getOutputStream().write("我是个中国人".getBytes());

     

最后

以上就是魁梧钢笔为你收集整理的java实现Servlet的中文乱码处理的全部内容,希望文章能够帮你解决java实现Servlet的中文乱码处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部