溫馨提示×

溫馨提示×

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

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

java中url傳參數(shù)出現(xiàn)亂碼的解決方法

發(fā)布時間:2020-06-18 15:45:53 來源:億速云 閱讀:197 作者:元一 欄目:編程語言

原因:

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)文章!

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

免責(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)容。

AI