本文總結自: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");