A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王超举 初级黑马   /  2017-7-24 11:11  /  992 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王超举 于 2017-7-24 11:13 编辑

处理request接收参数的中文乱码的问题:
无论是GET还是POST提交中文的时候,都会出现乱码的问题.
解决:
Ø  POST的解决方案:
* POST的参数在请求体中,直接到达后台的Servlet.数据封装到Servlet中的request中.request也有一个缓冲区.request的缓冲区也是ISO-8859-1编码.
* 设置request的缓冲区的编码:
    * request.setCharacterEncoding(“UTF-8”);  --- 一定要在接收参数之前设置编码就OK.
Ø  GET的解决方案:
* 1.修改tomcat的字符集的编码.(不推荐)
* 2.使用URLEncoder和URLDecoder进行编码和解码的操作.
String encode = URLEncoder.encode("笑傲江湖","utf-8");  //使用u8编码
String decode = URLDecoder.decode(encode,"iso-8859-1");//使用iso8859-1解码
String encode2 = URLEncoder.encode(decode,"iso-8859-1");//使用iso8859-1编码
String decode2 = URLDecoder.decode(encode2, "utf-8");//使用u8解码
* 3.使用String的构造方法:

写法如下:
String filename = new String(request.getParameter("filename").getBytes("ISO-8859-1"),"UTF-8");
System.out.println(filename);
=============================================================
处理response输出中文乱码的问题:
向页面响应的方法:
* getOutputStream();
* getWriter();

* 这两个方法是互斥的.
    * 做出响应的时候只能使用其中的一种流响应.

* 输出中文乱码的处理:
    * 字节流:* getOutputStream();
        * 设置浏览器默认打开的编码:
            * resposne.setHeader(“Content-Type”,”text/html;charset=UTF-8”);
        * 设置中文字节取出的时候编码.
            * “中文”.getBytes(“UTF-8”);
    * 字符流:* getWriter();
        * 设置浏览器打开的时候的编码
            * resposne.setHeader(“Content-Type”,”text/html;charset=UTF-8”);
        * 设置response的缓冲区的编码
            * response.setCharacterEncoding(“UTF-8”);

        ***** 简化的写法:response.setContentType(“text/html;charset=UTF-8”);

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马