Servlet中文亂碼問題解決方案解析
一、出現(xiàn)亂碼的原因
由于瀏覽器默認使用UTF-8碼表進行編碼,而servlet使用ISO-8859-1碼表進行編碼,傳輸和接收方編碼不一致導(dǎo)致亂碼的產(chǎn)生。
二、亂碼的類型以及解決辦法
1、 response亂碼
一、出現(xiàn)亂碼的原因
由于瀏覽器默認使用UTF-8碼表進行編碼,而servlet使用ISO-8859-1碼表進行編碼,傳輸和接收方編碼不一致導(dǎo)致亂碼的產(chǎn)生。
二、亂碼的類型以及解決辦法
1、 response亂碼
response.setHeader("content-type", "text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8");
第一句目的是為了指定瀏覽器以UTF-8碼表打開服務(wù)器發(fā)出的數(shù)據(jù)
第二句目的是設(shè)置response使用的碼表,控制response以UTF-8碼表向瀏覽器寫入數(shù)據(jù)(必須寫在方法中第一行)
或者:
OutputStream out=response.getOutputStream(); out.write("<metahttp-equiv='content-type' content='text/html;charset=UTF-8'>".getBytes());
通過字節(jié)流向瀏覽器寫入meta標簽控制瀏覽器使用的碼表
2、 request亂碼
request請求分為post和get,分別有不同的方法解決
①post請求亂碼
request.setCharacterEncoding("UTF-8");
String username=request.getParameter("username"); username=new String(username.getBytes("iso8859-1"),"UTF-8");
字節(jié)流從表單中提取的參數(shù)先用iso8859-1解析,再使用UTF-8碼表轉(zhuǎn)化寫入。
或:如果是通過超鏈接傳遞參數(shù),超鏈接是get提交,必須手工修改編碼
3、 瀏覽器顯示亂碼
第一種:
response.setContentType("text/html;charset=UTF-8");
第二種:
response.setCharacterEncoding("UTF-8"); response.setHeader("content-type", "text/html;charset=UTF-8");
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java?HttpURLConnection使用方法與實例演示分析
這篇文章主要介紹了Java?HttpURLConnection使用方法與實例演示,HttpURLConnection一個抽象類是標準的JAVA接口,該類位于java.net包中,它提供了基本的URL請求,響應(yīng)等功能,下面我們來深入看看2023-10-10Java?axios與spring前后端分離傳參規(guī)范總結(jié)
這篇文章主要介紹了Java?axios與spring前后端分離傳參規(guī)范總結(jié),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下2022-08-08Java實現(xiàn)LeetCode(1.兩數(shù)之和)
這篇文章主要介紹了Java實現(xiàn)LeetCode(兩數(shù)之和),本文使用java采用多種發(fā)放實現(xiàn)了LeetCode的兩數(shù)之和題目,需要的朋友可以參考下2021-06-06Java多線程+鎖機制實現(xiàn)簡單模擬搶票的項目實踐
鎖是一種同步機制,用于控制對共享資源的訪問,在線程獲取到鎖對象后,可以執(zhí)行搶票操作,本文主要介紹了Java多線程+鎖機制實現(xiàn)簡單模擬搶票的項目實踐,具有一定的參考價值,感興趣的可以了解一下2024-02-02Mybatis generator mapper文件覆蓋原文件的示例代碼
這篇文章主要介紹了Mybatis generator mapper文件覆蓋原文件,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11詳解如何在SpringBoot項目中使用統(tǒng)一返回結(jié)果
在一個完整的項目中,如果每一個控制器的方法都返回不同的結(jié)果,那么對項目的維護和擴展都會很麻煩。因此,本文為大家準備了SpringBoot項目中使用統(tǒng)一返回結(jié)果的方法,需要的可以參考一下2022-10-10