java字符流写入式乱码_字节流乱码与字符流乱码
本文總結(jié)自:https://blog.csdn.net/mingliangniwo/article/details/44178491
前提:數(shù)據(jù)展示過(guò)程:數(shù)據(jù)寫(xiě)入response容器,瀏覽器解析response容器
字節(jié)流亂碼問(wèn)題
如果用response.getOutputStream.write("中國(guó)".getBytes("utf-8")); 寫(xiě)入流(把‘中國(guó)’以u(píng)tf-8的格式存入response容器),瀏覽器上會(huì)展示亂碼。
原因:瀏覽器默認(rèn)使用碼表gb2312來(lái)展示數(shù)據(jù),因此會(huì)出現(xiàn)亂碼。
解決方法:可以通過(guò)設(shè)置Content-type來(lái)指定碼表:
response.setHeader("Content-type", "text/html;charset=utf-8");
字符流亂碼問(wèn)題
如果用response.getWriter.write("中國(guó)");? 寫(xiě)入流,出現(xiàn)亂碼。
原因:當(dāng)將"中國(guó)"寫(xiě)入到Response中,Response容器默認(rèn)使用iso8859-1碼表存儲(chǔ)"中國(guó)",那么存儲(chǔ)的會(huì)是兩個(gè)亂碼
如果設(shè)置:response.setHeader("Content-type", "text/html;charset=utf-8");會(huì)怎樣?
依舊出現(xiàn)亂碼。。
原因是試圖將iso8859-1字節(jié)還原成UTF-8字節(jié)是不可行的。
因此我們需要在源頭上,即裝入容器是就采用utf-8
response.setCharacterEncoding("utf-8");
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的java字符流写入式乱码_字节流乱码与字符流乱码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: dz论坛php.ini设置,Discuz
- 下一篇: Oracle数据库模式对象管理问题与解决