本帖最后由 小石姐姐 于 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”);
|
|