response和request编码

本文详细介绍了在Web开发中如何处理各种编码问题,包括响应编码、请求编码及URL编码,并提供了GET和POST请求的具体处理方法。

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

编码
常见字符编码:iso-8859-1(不支持中文)、gb2312 gbk gb18030(系统默认编码,中国的国标码)
utf-8(万国码,支持全世界的编码,所以我们使用这个)

1.响应编码
响应编码

  1. 当使用response.getWrite()向客户端发送字符数据时候,如果在之前没有设置编码,那么默认使用iso,因为iso不支持中文,所以一定会乱码。

  2. 在使用response.getWrite()之前可以使用response.setCharacterEncoding()来设置字符流的编码为gbk或utf-8,当然我们通常会选择utf-8,这样使用response。

  3. 在使用response.getWrite()之前可以使用response.setHeader(“Content-type”,”text/html;charset=utf-8”)来设置响应头,通知浏览器服务器这边使用的。

  4. response.setHeader(“Content-Type”,”text/html;charset=utf-8”)的快捷方法:setContentType(“text/html;charset=utf-8”).

2.请求编码

  1. 客户端发送给服务器的请求参数是什么编码

    客户端首先要打开一个页面,然后在页面中提交表单或点击超链接!
    在请求这个页面时,服务器响应的编码是什么,那么客户端发送请求时的编码就是什么

  2. 服务器默认使用什么编码来解码参数

    服务器端默认使用ISO-8859-1来解码!所以这一定会出现乱码的!因为ISO不支持中文!

  3. 请求编码处理分为两种:GET和POST,GET请求参数不在请求体中,而POST请求参数在请求体中,他们处理乱码方式是不同的。

2.3.1 GET请求编码处理

     String username=request.getParameter("username");       
     byte[] b=username.getBytes("ISO-8859-1");        //反编码 
     username=new String(b,"utf-8");

     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     String username=request.getParameter("username");       
     byte[] b=username.getBytes("ISO-8859-1");        //反编码 
     username=new String(b,"utf-8");
     System.out.println("username:"+username);
     response.setContentType("text/html;charset=utf-8");  //响应到客户端的中文乱码
     response.getWriter().print("usernmae:"+username);
   }

2.3.2 POST请求编码处理
request.setCharacterEncoding(“utf-8”);
String username=request.getParameter(“username”);

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("utf-8");          //请求的中文乱码
    String username=request.getParameter("username");
    System.out.println("username:"+username);
    response.setContentType("text/html;charset=utf-8");  //响应到客户端时候解决乱码
    response.getWriter().print("username:"+username);
}

3.URL编码

它不是字符编码
它是用来在客户端与服务器之间传递参数用的一种方式
URL编码需要先指定一种字符编码,把字符串解码后,得到byte[],然后把小于0的字节+256,再转换成16进制,前面再加上%
POST请求默认值使用URL编码,tomcat会自动使用URL解码
URL解码:String username=URLEncoder.encode(username,"utf-8");
URL编码:String username=URLDecoder.decode(username,"utf-8");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值