为了账号安全,请及时绑定邮箱和手机立即绑定

Servlet response发送中文数据问题

Servlet response发送中文数据问题

紫衣仙女 2018-07-11 14:15:19
1、如下设置响应数据时,浏览器默认解码数据使用gbk,项目中getBytes也是默认使用gbk进行编码,因此浏览器显示正确,但是F12查看具体的响应是乱码   public void doGet(HttpServletRequest request, HttpServletResponse response)             throws ServletException, IOException     {         ServletOutputStream outputStream = response.getOutputStream();         String dataString="测试";         outputStream.write(dataString.getBytes(""));              }2、如下设置相应数据时,浏览器解码数据使用utf-8,项目中getBytes也是使用utf-8进行编码,因此浏览器显示正确,F12查看具体的响应也是正确的         response.setContentType("text/html;charset=utf-8");         ServletOutputStream outputStream = response.getOutputStream();         String dataString="测试";         outputStream.write(dataString.getBytes("utf-8"));3、因此产生了疑问,数据编码成字节的格式与浏览器解码字节的格式都一致的情况下,为什么用gbk响应这里是乱码,而用utf-8响应这里是正确的?4、看了一些视频教程,有解释为http传输数据时始终使用的是ISO8859-1对数据进行了二次解码。但是也没有解决我上述的疑问,根据视频教程的解答,当程序中用utf-8编码成字节写入流中,http传输时使用ISO8859-1可以正确编码成字符,因此F12查看的时候是正确的字符;当使用gbk编码成字节写入流中时,http传输使用ISO8859-1不能正确编码成字符,所以F12查看是乱码希望各位有经验的朋友帮忙回答下,谢谢
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 857 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信