javaEE, 在servlet 中 Requset编码问题和responsed处理乱码的问题

本文深入探讨了在Servlet中处理Request和Response编码问题的多种方法,包括解决POST和GET请求的乱码问题,以及如何正确输出中文字符。文章详细介绍了设置字符编码的技巧,确保数据在传输过程中的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在servlet 中 Requset编码问题和responsed处理乱码的问题

Requset编码问题

Post接受方式出现乱码问题:

  • 出现的问题:Post是请求体,接受到用户的信息先存放在缓冲区中,而缓冲区的编码是iso-8829-1,和接受到到用户信息不是一样的字符集,所以会出现编码问题

-解决方法:为缓冲区设置编码和用户提交的一样

 request.setCharacterEncoding("UTf-8");//设置缓冲区的编码 
 String string =  request.getParameter("name");

Get接受方式出现乱码问题:

Get在得到用户信息时会在url后面,其实已经经历过一次编码

1:解决方法:get所得到用户的信息以ISO-8859-1的编码存入到缓冲区中,然后以utf-8解码;

name = request.getParameter("name");

     
 String string = new String(name.getBytes("ISO-8859-1"),"UTF-8");

     //String的方法

responsed对象:



//字符流输出中文方式

 response.getWriter().println("中国");
  1. 一定会出现乱码,字符流有缓冲区,而默认的缓冲区编为:ISO-8859-1,这个字符集不支持中文

  2. 解决方法:设置response获得缓冲区时的编码和浏览器默认的编码保持一致

方法一

//设置浏览器默认打开时的编码

response.setHeader("Content-type","text/html;charset=UTF-8");

//设置response缓冲区的编码

response.setCharacterEncoding("UTF-8");              

response.getWriter().println("中国");

方法二

       response.setContentType("text/html;charset=UTF-8");

         response.getWriter().println("中国");

 response.setStatus(404);//设置响应状态   

 response.setStatus(302);//设置重定向

 response.setHeader("Location", "/web_test/Test08"); 

 response.sendRedirect("/web_test/Test08");//替换重定向两句写法

跳转:

   response.setContentType("text/html;charset=UTF-8");

   response.getWriter().println("5秒后跳转");

  response.setHeader("Refresh", "5;url=/web_test/Test08");

Response编码问题:

//字节流输出中文的方式

            ServletOutputStream stream = response.getOutputStream();

               
stream.write("中文".getBytes());

1:不一定会有乱码现象,如果打开的浏览器和转为直接数组的编码一样,就不会产生乱码问题

2:解决方法:编码和直接的编码一样一样就行

ServletOutputStream stream = response.getOutputStream();

             //设置浏览器打开始默认的字符集

            
response.setHeader("Content-type","text/html;charset=UTF-8");

                  stream.write("中文".getBytes());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值