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查看是乱码希望各位有经验的朋友帮忙回答下,谢谢
添加回答
举报
0/150
提交
取消