您好,登錄后才能下訂單哦!
原因:
Http請求傳輸時將url以ISO-8859-1
編碼,服務(wù)器收到字節(jié)流后默認(rèn)會以ISO-8859-1
編碼來解碼成字符流(造成中文亂碼)。
方法一:
我們需要把request.getParameter
(“參數(shù)名”)
獲取到的字符串先用ISO-8859-1編碼成字節(jié)流,然后再將其用utf-8解碼成字符流。
String str = new String(request.getParameter("參數(shù)名").getBytes("iso-8859-1"), "utf-8");
這是通過轉(zhuǎn)碼的方式處理亂碼問題。
方法二:
我們也可以通過Tomcat配置文件,設(shè)置URL編碼集(URIEncoding)設(shè)置編碼,這種方法也是一勞永逸的。
修改Tomcat/conf 目錄下 server.xml文件
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8444" useBodyEncodingForURI="true" URIEncoding="UTF-8"/>
重點(diǎn)在 userBodyEncodingForURI 和 URIEncoding 這兩個屬性。
useBodyEncodingForURI參數(shù)
表示是否用request.setCharacterEncoding參數(shù)對URL提交的數(shù)據(jù)和表單中GET方式提交的數(shù)據(jù)進(jìn)行重新編碼,在默認(rèn)情況下,該參數(shù)為false。
URIEncoding參數(shù)
指定對所有GET方式請求進(jìn)行統(tǒng)一的重新編碼(解碼)的編碼。
URIEncoding和useBodyEncodingForURI區(qū)別
URIEncoding是對所有GET方式的請求的數(shù)據(jù)進(jìn)行統(tǒng)一的重新編碼。
useBodyEncodingForURI則是根據(jù)響應(yīng)該請求的頁面的request.setCharacterEncoding參數(shù)對數(shù)據(jù)進(jìn)行的重新編碼,不同的頁面可以有不同的重新編碼的編碼。
擴(kuò)展:
統(tǒng)一資源標(biāo)識符(Uniform Resource Identifier ,URL)是采用一種特定語法標(biāo)識一個資源的字符串。所標(biāo)識的資源可能是服務(wù)器上的一個文件。Java的URL網(wǎng)絡(luò)類可以讓你通過URL去練級網(wǎng)絡(luò)服務(wù)器并獲取資源。
以上就是java中url傳中文參數(shù)出現(xiàn)亂碼的詳細(xì)內(nèi)容,更多請關(guān)注億速云其它相關(guān)文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。