码迷,mamicode.com
首页 > 其他好文 > 详细

request和response对象如何解决中文乱码问题?

时间:2019-06-15 21:55:42      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:put   bsp   header   opened   构造   att   没有   more   cep   

出现中文乱码的问题,一般的原因编码和和解码不一致造成的。

技术图片
 1  /*
 2             乱码:编码和解码不一致导致的
 3             GET:你好
 4             POST:??????
 5             tomcat版本:8.5及以上版本
 6                 GET请求方式,request对象使用的字符集默认为utf-8
 7                 POST请求方式,request对象使用的字符集默认为ISO8859-1
 8                 解决:
 9                     设置request对象的字符集为utf-8
10                     request.setCharacterEncoding("utf-8");
11             tomcat版本:8.5以下版本(了解)
12                 没有设置request的字符集
13                     GET:??????
14                     POST:??????
15                 request.setCharacterEncoding("utf-8"); 只针对post方式有效
16                     GET:??????
17                     POST:你好
18                 解决:
19                     request对象默认字符集ISO8859-1
20                         1.String类中的方法:可以把获取到的ISO8859-1编码的字符串转换为字节数组
21                              byte[] getBytes(Charset charset) 使用指定的字符集把字符串转换为字节数组
22                         2.String类的构造方法:把字节输出以UTF-8的方式解码为字符串
23                             String(byte[] bytes, String charsetName) 把字节数组,根据字符集转换字符串
24          */
View Code

重点介绍一下response,我才用的tomcat8.5版本,一些详细的介绍在代码中。

具体的代码如下:(采用字节流与字符流)

技术图片
 1 import javax.servlet.ServletException;
 2 import javax.servlet.annotation.WebServlet;
 3 import javax.servlet.http.HttpServlet;
 4 import javax.servlet.http.HttpServletRequest;
 5 import javax.servlet.http.HttpServletResponse;
 6 import java.io.IOException;
 7 
 8 @WebServlet(urlPatterns = "/A_B")
 9 public class DemoRes02 extends HttpServlet {
10 
11     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
12             //test1(response);
13             test2(response);
14     }
15 
16     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
17         doGet(request, response);
18     }
19 
20     //使用字符流响应中文
21     public void test1(HttpServletResponse response) throws IOException {
22         //设置浏览器默认打开的时候采用的字符集
23         response.setContentType("text/html;charset=utf8");
24         response.getWriter().write("A_B,陈燕龙");
25     }
26     //使用字节流相应中文输出中文
27     public void test2(HttpServletResponse response) throws IOException {
28         //设置浏览器默认打开的时候采用的字符集
29         response.setHeader("Content-Type","text/html;chartset=utf-8");
30         response.getOutputStream().write("我,hello".getBytes());
31     }
32 
33 }
View Code

 

request和response对象如何解决中文乱码问题?

标签:put   bsp   header   opened   构造   att   没有   more   cep   

原文地址:https://www.cnblogs.com/chenyanlong/p/11028946.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!