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