字节流乱码与字符流乱码
本文总结自:https://blog.csdn.net/mingliangniwo/article/details/44178491
前提:数据展示过程:数据写入response容器,浏览器解析response容器
字节流乱码问题
如果用response.getOutputStream.write("中国".getBytes("utf-8")); 写入流(把‘中国’以utf-8的格式存入response容器),浏览器上会展示乱码。
原因:浏览器默认使用码表gb2312来展示数据,因此会出现乱码。
解决方法:可以通过设置Content-type来指定码表:
response.setHeader("Content-type", "text/html;charset=utf-8");
字符流乱码问题
如果用response.getWriter.write("中国"); 写入流,出现乱码。
原因:当将"中国"写入到Response中,Response容器默认使用iso8859-1码表存储"中国",那么存储的会是两个乱码
如果设置:response.setHeader("Content-type", "text/html;charset=utf-8");会怎样?
依旧出现乱码。。
原因是试图将iso8859-1字节还原成UTF-8字节是不可行的。
因此我们需要在源头上,即装入容器是就采用utf-8
response.setCharacterEncoding("utf-8");
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步