web服务器的Content-Type为text/plain时返回出现中文乱码问题解决


问题背景:

         在http请求的时候,我们在请求头部设置了Content-Type的具体charset值的话,服务端会先按照这个参数来以何种编码格式(utf-8,gbk等)解码,将字节流解码成字符流(网络传输都是以字节流的形式).

        同样地,服务器在返回时也会设置Content-Type,里面有编码的格式,如果不设置的话(Content-Type=text/plain就是没有设置编码格式),客户端读取不到Content-Type中的编码格式,就会以本地默认的方式进行解码,从而有可能造成中文乱码的问题.

解决方法:

       假设我们知道服务器的编码是utf-8时,而客户端的默认编码是ISO-8859-1(tomcat的默认编码格式),那我们的解决思路是:将已经读取的字符串以ISO-8859-1格式转成字节流,然后将字节流转换成以utf-8编码的字符串,比如:

response = new String(getMethod.getResponseBodyAsString().getBytes("ISO-8859-1"),"utf-8");


总结:中文乱码的出现,主要是由于

编码过程:       字符流-----------------以charset编码格式转成------------>字节流

解码过程:       字节流----------------以charset编码格式转成-------------->字符流

这两个过程的编码格式charset不一致造成的



附:


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值