客户端提交数据给服务器端(Requset)

如果数据中带有中文的话,有可能会出现乱码情况,那么可以参照以下方法解决。

  • 如果是GET方式
  1. 1.代码转码

  2. String username = request.getParameter("username");
    String password = request.getParameter("password");
    System.out.println("userName="+username+"==password="+password);
    //get请求过来的数据,在url地址栏上就已经经过编码了,所以我们取到的就是乱码,
    //tomcat收到了这批数据,getParameter 默认使用ISO-8859-1去解码
    //先让文字回到ISO-8859-1对应的字节数组 , 然后再按utf-8组拼字符串
    username = new String(username.getBytes("ISO-8859-1") , "UTF-8");
    System.out.println("userName="+username+"==password="+password);

    ​ 2.直接在tomcat里面做配置,以后get请求过来的数据永远都是用UTF-8编码。

可以在tomcat里面做设置处理 conf/server.xml 加上URIEncoding="utf-8"

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"

URIEncoding="UTF-8"/>

  • 如果是POST方式

这个说的是设置请求体里面的文字编码。 get方式,用这行,有用吗? ---> 没用,因为Get表单提交的内容在地址栏

 request.setCharacterEncoding("UTF-8");
   这行设置一定要写在getParameter之前。

响应的数据中有中文(Response)

那么有可能出现中文乱码

  • 以字符流输出

response.getWriter()

//1. 指定输出到客户端的时候,这些文字使用UTF-8编码
response.setCharacterEncoding("UTF-8"); //2. 直接规定浏览器看这份数据的时候,使用什么编码来看。
response.setHeader("Content-Type", "text/html; charset=UTF-8");
response.getWriter().write("Hello 世界...");
  • 以字节流输出

response.getOutputStream()

//1. 指定浏览器看这份数据使用的码表
response.setHeader("Content-Type", "text/html;charset=UTF-8"); //2. 指定输出的中文用的码表
response.getOutputStream().write("你好 World".getBytes("UTF-8"));
  • 不管是字节流还是字符流,直接使用一行代码就可以了。
response.setContentType("text/html;charset=UTF-8");

然后在写数据即可。


 

HttpServlet中文乱码问题的更多相关文章

  1. [转]Filter实现处理中文乱码,转义html标签,过滤敏感词

    原文地址:http://www.cnblogs.com/xdp-gacl/p/3952405.html 在filter中可以得到代表用户请求和响应的request.response对象,因此在编程中可 ...

  2. HttpClient_002_中文乱码、HttpClient中文乱码透析、总结

    中文乱码原理代码: String s = "中文"; byte[] bs2 = s.getBytes("utf-8");//将s拆成:utf-8个体,注:utf ...

  3. form提交数据中文乱码问题总结

    一:form在前台以post方式提交数据: 浏览器将数据(假设为“中国”)发送给服务器的时候,将数据变成0101的二进制数据(假设为98 99)时必然要查码表,浏览器以哪个码表打开网页,浏览器就以哪个 ...

  4. Java 关于中文乱码处理的经验总结【转载】

    为什么说乱码是中国程序员无法避免的话题呢?这个首先要从编码机制上说起,大家都是中文和英文的编码格式不是一样,解码也是不一样的!如果中国的程序员不会遇到乱码,那么只有使用汉语编程.汉语编程是怎么回事我也 ...

  5. 04_过滤器Filter_02_Filter解决中文乱码问题

    [过滤器解决中文乱码问题实例] [工程截图] [web.xml] <?xml version="1.0" encoding="UTF-8"?> &l ...

  6. Servlet--j2e中文乱码解决

    我们在写项目的时候经常会传递一些中文参数,但是j2e默认使用ISO-8859-1来编码和解码,所以很容易出现中文乱码问题.这里我做一个统一的整理,其实这里的中文乱码问题和上一篇的路径问题都是j2e经常 ...

  7. Servlet中文乱码问题解决办法

    首先对于源jsp网站和servlet里面的字符集要一样,一般支持中文的字符集为UTF-8最好采用这个字符集(除此之外还有gb2312); 对于源jsp文件的代码中需要设置 设置你的page里面的字符集 ...

  8. java web过滤器实际应用(解决中文乱码 html标签转义功能 敏感字符过滤功能)

    转载地址:http://www.cnblogs.com/xdp-gacl/p/3952405.html 在filter中可以得到代表用户请求和响应的request.response对象,因此在编程中可 ...

  9. 处理URL传递中文乱码问题

    在网上搜了很多资料都没有搞定,一般都有以下几种说法: 方法1:在后台中先获得字符串的iso-8859-1编码形式数组,再使用此数组实例一个UTF-8编码形式String类型字符串. 页面提交的url为 ...

随机推荐

  1. Mac的VIM中delete键失效的原因和解决方案

    在Mac的键盘上实际是没有backspace这个键的.其实Mac的delete就是Windows的backspace,实现的都是向左删除的功能.Mac上如果要实现向右删除的功能需要使用⌘+delete ...

  2. 三 PrePareStatement注入,DELETE和TRUNCATE

    PreparedStatement PreparedStatement是一个接口,它继承了Statement,该接口有以下几个优点: 性能比Statement高,会把sql预编译 可以解决sql注入问 ...

  3. greenplum 数组操作

    参考:http://gpdb.docs.pivotal.io/4390/admin_guide/query/topics/functions-operators.html Table 4. Advan ...

  4. P1063 计算谱半径

    P1063 计算谱半径 转跳点:

  5. 5G/NR 频带详解

    原文链接:http://www.sharetechnote.com/html/5G/5G_FR_Bandwidth.html 在NR中,3GPP中规定了大约两个大的频率范围.一个是我们通常所说的(su ...

  6. Oracle 的DBA考证

    转自 :https://www.cnblogs.com/chunge2050/archive/2013/04/16/3023730.html 详细的了解了几天之后,总结起来就是oracle为DBA认证 ...

  7. phpStudy隐藏后门预警

    1.事件背景 近日,使用广泛的PHP环境集成程序包phpStudy被公告疑似遭遇供应链攻击,程序包自带PHP的php_xmlrpc.dll模块隐藏有后门,安恒应急响应中心和研究院随即对国内下载站点提供 ...

  8. prepareBeanFactory方法源码跟踪

    看这篇文章之前可以先了解之前的跟踪流程,https://www.jianshu.com/p/4934233f0ead 代码过宽,可以shift + 鼠标滚轮 左右滑动查看 AbstractApplic ...

  9. Mongoose多表查询

    文章来自 两个表关联查询aggregate 多个表关联查询aggregate populate多表关联查询 多表查询的两个方式 一个是aggregate聚合 一个是populate Schema的外表 ...

  10. CI自带的文件上传及生成缩略图

    /* * 文件上传 * @param $upload_path 文件上传路径 * @param $formpic 表单name属性名称 */ private function doUpload($up ...