溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

jsp中request接收中文參數(shù)亂碼問(wèn)題解決辦法

發(fā)布時(shí)間:2020-07-19 12:29:04 來(lái)源:網(wǎng)絡(luò) 閱讀:9469 作者:J星星點(diǎn)燈 欄目:開(kāi)發(fā)技術(shù)

    在利用表單提交數(shù)據(jù)時(shí)發(fā)現(xiàn),獲得的中文參數(shù)會(huì)發(fā)生亂碼,解決方法如下:

<body>
	<%
		String s=request.getParameter("uname");
		s = new String(s.getBytes("ISO-8859-1"),"utf-8");//解決亂碼問(wèn)題
	%>
	<%=s %>
</body>

s = new String(s.getBytes("ISO-8859-1"),"utf-8");此程序的作用是將接收到的的參數(shù)先轉(zhuǎn)化為字節(jié)碼文件,然后進(jìn)行utf-8編碼。

防止中文亂碼的總結(jié):

  

1、對(duì)于同一個(gè)應(yīng)用,最好統(tǒng)一編碼,推薦為UTF-8,當(dāng)然GBK也可以。     

2、正確設(shè)置JSP的pageEncoding="UTF-8" 

3、在所有的JSP/Servlet中設(shè)置contentType="text/html;charset=UTF-8"或response.setCharacterEncoding("UTF-8"),從而間接實(shí)現(xiàn)對(duì)瀏覽器編碼的設(shè)置。     

4、對(duì)于非表單提交的get或url請(qǐng)求,可以修改Tomcat的默認(rèn)配置,推薦將useBodyEncodingForURI參數(shù)設(shè)置為true,也可以將URIEncoding參數(shù)設(shè)置為 UTF-8(有可能影響其他應(yīng)用,所以不推薦)。或者用下面的方法,在接收數(shù)據(jù)時(shí)處理:

  request.getParameter("userID"),得到userID的值   

  request.getParameter("userID").trim()將這個(gè)值去掉兩邊的空格   

  request.getParameter("userID").trim().getBytes("ISO-8859-1"))將這個(gè)String用ISO-8859-1編碼成一個(gè)字節(jié)數(shù)祖   

  new   String(request.getParameter("userID").trim().getBytes("ISO-8859-1"),"utf-8")將剛才的字節(jié)數(shù)祖?zhèn)鬟M(jìn)string的構(gòu)造函數(shù)按照"utf-8"編碼創(chuàng)建一個(gè)string對(duì)象。 

5.使用URLEncoder的方法

傳參前用: 

//使用指定的編碼機(jī)制將字符串轉(zhuǎn)換為 application/x-www-form-urlencoded 格式

String username_encoder = URLEncoder.encode(username,"UTF-8");

接參數(shù)后顯示用:

//使用指定的編碼機(jī)制對(duì) application/x-www-form-urlencoded 字符串解碼

String username_decoder = URLDecoder.decode(request.getParameter("username"),"UTF-8");


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI