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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2017-11-29 14:46 编辑

无论是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”);
代码如下:
1.             String data="中国 ";  
2.                response.setHeader("Content-type", "text/html;charset=UTF-8");  
3.                OutputStream out=response.getOutputStream();  
4.                out.write(data.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”);

3 个回复

倒序浏览
支持下楼主
回复 使用道具 举报
可以使用
回复 使用道具 举报
棒棒的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马