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