原因:
Http請(qǐng)求傳輸時(shí)將url以ISO-8859-1
編碼,服務(wù)器收到字節(jié)流后默認(rèn)會(huì)以ISO-8859-1
編碼來(lái)解碼成字符流(造成中文亂碼)。
方法一:
我們需要把request.getParameter
(“參數(shù)名”)
獲取到的字符串先用ISO-8859-1編碼成字節(jié)流,然后再將其用utf-8解碼成字符流。
String str = new String(request.getParameter("參數(shù)名").getBytes("iso-8859-1"), "utf-8");
這是通過(guò)轉(zhuǎn)碼的方式處理亂碼問(wèn)題。
方法二:
我們也可以通過(guò)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 這兩個(gè)屬性。
useBodyEncodingForURI參數(shù)
表示是否用request.setCharacterEncoding參數(shù)對(duì)URL提交的數(shù)據(jù)和表單中GET方式提交的數(shù)據(jù)進(jìn)行重新編碼,在默認(rèn)情況下,該參數(shù)為false。
URIEncoding參數(shù)
指定對(duì)所有GET方式請(qǐng)求進(jìn)行統(tǒng)一的重新編碼(解碼)的編碼。
URIEncoding和useBodyEncodingForURI區(qū)別
URIEncoding是對(duì)所有GET方式的請(qǐng)求的數(shù)據(jù)進(jìn)行統(tǒng)一的重新編碼。
useBodyEncodingForURI則是根據(jù)響應(yīng)該請(qǐng)求的頁(yè)面的request.setCharacterEncoding參數(shù)對(duì)數(shù)據(jù)進(jìn)行的重新編碼,不同的頁(yè)面可以有不同的重新編碼的編碼。
擴(kuò)展:
統(tǒng)一資源標(biāo)識(shí)符(Uniform Resource Identifier ,URL)是采用一種特定語(yǔ)法標(biāo)識(shí)一個(gè)資源的字符串。所標(biāo)識(shí)的資源可能是服務(wù)器上的一個(gè)文件。Java的URL網(wǎng)絡(luò)類(lèi)可以讓你通過(guò)URL去練級(jí)網(wǎng)絡(luò)服務(wù)器并獲取資源。
以上就是java中url傳中文參數(shù)出現(xiàn)亂碼的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!
本文標(biāo)題:java中url傳參數(shù)出現(xiàn)亂碼的解決方法-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://jinyejixie.com/article18/hidgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、定制網(wǎng)站、關(guān)鍵詞優(yōu)化、小程序開(kāi)發(fā)、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容