request与response的乱码问题的总结及解决方法

一. response的乱码问题:

    1,使用   字节流  向页面输出中文:
 不一定会出现乱码,因为中文字节数组默认是GBK,如果浏览器打开的默认编码也是GBK,就不会出现乱码,否则会乱码。
 解决办法:
 需要指定浏览器打开的时候的编码,response.setHeader("Content-Type","text/html;charset=UTF-8");
 需要指定中文字节数组采用的编码。
 例如:
 response.setHeader("Content-Type", "text/html;charset=UTF-8");
 OutputStream os = response.getOutputStream();
 os.write("中文".getBytes("UTF-8"));

    2,使用   字符流   向页面输出中文:
        一定会出现乱码,response:对象是由老外设计的 response缓冲区用的是ISO-8859-1编码.
        解决方案:
 需要将response的缓冲区的编码集修改了. response.setCharacterEncoding("");设置response缓冲区的编码。
 需要将浏览器默认打开时候编码进行设置.
 例如:
 response.setHeader("Content-Type","text/html;charset=UTF-8");
        response.setCharacterEncoding("UTF-8");

 或者是一句话:
 response.setContentType("text/html;charset=UTF-8");(它就相当于上面的两句了)

二.  request的乱码问题:

     分为post请求和get请求:

     1,POST请求乱码 :request.setCharacterEncoding("utf-8");
     2,GET请求乱码
     解决方案一:修改server.xml
                <Connector port="80" protocol="HTTP/1.1"
                connectionTimeout="20000"
                redirectPort="8443" URIEncoding="utf-8"/>
      但是必须有修改tomcat服务器配置文件权限

     解决方案二:逆向编解码
     username = URLEncoder.encode(username, "ISO8859-1");
     username = URLDecoder.decode(username, "utf-8");

     或者简化成:
     username = new String(username.getBytes("ISO8859-1"),"utf-8");

 

 

 

转载于:https://www.cnblogs.com/781811964-Fighter/p/3479230.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值