1、如下設(shè)置響應(yīng)數(shù)據(jù)時(shí),瀏覽器默認(rèn)解碼數(shù)據(jù)使用gbk,項(xiàng)目中g(shù)etBytes也是默認(rèn)使用gbk進(jìn)行編碼,因此瀏覽器顯示正確,但是F12查看具體的響應(yīng)是亂碼 public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
ServletOutputStream outputStream = response.getOutputStream();
String dataString="測(cè)試";
outputStream.write(dataString.getBytes(""));
}2、如下設(shè)置相應(yīng)數(shù)據(jù)時(shí),瀏覽器解碼數(shù)據(jù)使用utf-8,項(xiàng)目中g(shù)etBytes也是使用utf-8進(jìn)行編碼,因此瀏覽器顯示正確,F12查看具體的響應(yīng)也是正確的 response.setContentType("text/html;charset=utf-8");
ServletOutputStream outputStream = response.getOutputStream();
String dataString="測(cè)試";
outputStream.write(dataString.getBytes("utf-8"));3、因此產(chǎn)生了疑問(wèn),數(shù)據(jù)編碼成字節(jié)的格式與瀏覽器解碼字節(jié)的格式都一致的情況下,為什么用gbk響應(yīng)這里是亂碼,而用utf-8響應(yīng)這里是正確的?4、看了一些視頻教程,有解釋為http傳輸數(shù)據(jù)時(shí)始終使用的是ISO8859-1對(duì)數(shù)據(jù)進(jìn)行了二次解碼。但是也沒(méi)有解決我上述的疑問(wèn),根據(jù)視頻教程的解答,當(dāng)程序中用utf-8編碼成字節(jié)寫入流中,http傳輸時(shí)使用ISO8859-1可以正確編碼成字符,因此F12查看的時(shí)候是正確的字符;當(dāng)使用gbk編碼成字節(jié)寫入流中時(shí),http傳輸使用ISO8859-1不能正確編碼成字符,所以F12查看是亂碼希望各位有經(jīng)驗(yàn)的朋友幫忙回答下,謝謝
添加回答
舉報(bào)
0/150
提交
取消