『壹』 java中url後面加中文參數urlencoder.encode亂碼怎麼辦

你這個問題真心不好辦,建議你把頁面編碼改為GBK編碼把。像樓上說的這些方法看似行得通,原理就是把utf-8轉為gbk然後再轉回utf-8,但那樣是不能解決問題的,試圖通過String newStr = new String(str.getBytes("gbk","utf-8"));辦不到的,結果是中文字元為奇數會出現最後一個字亂碼。我以前也曾碰到這個情況,最後還是把頁面統一編碼解決。
-

『貳』 求助,解釋下Java中怎樣把網址URL編碼轉義

Java在net包中提供了相應工具類,直接調用即可

importjava.net.URLDecoder;
importjava.net.URLEncoder;

try{
StringurlEncode=URLEncoder.encode("網路一下,你就知道","UTF-8");
System.out.println(urlEncode);
StringurlDecode=URLDecoder.decode(urlEncode,"UTF-8");
System.out.println(urlDecode);
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
}

『叄』 java url 編碼

POST過去的數據是不用URL編碼的。
你先request.getParameter("xm")獲取下,看是否正確,如果是問號的話就轉換下

new String(request.getParameter("xm").getBytes("iso8859_1"),"gbk");

你這個是在Java裡面獲取的?request是JSP裡面的一個對象,在Java里就需要傳入一個HttpServletRequest實例了。

『肆』 怎麼對url連接進行URL 編碼

在js中可以使用抄escape(), encodeURL(), encodeURIComponent(),三種方襲法都有一些不會被編碼的符號:

escape():@ * / +

encodeURL():! @ # $& * ( ) = : / ; ? + '

encodeURIComponent():! * ( ) '

在java端可以使用URLDecoder.decode(「中文」, "UTF-8");來進行解碼

但是由於使用request.getParameter()來獲取參數時已經對編碼進行了一次解碼,所以一般情況下只要在js中使用

encodeURIComponent("中文");

在java端直接使用request.getParameter()來獲取即可返回中文。

如果你想在java端使用URLDecoder.decode(「中文」, "UTF-8");來解碼也可以在js中進行二次編碼,即:

encodeURIComponent(encodeURIComponent("中文"));

如果不進行二次編碼的話,在java端通過decode方法取的會是亂碼。

『伍』 JAVA中URL編碼工具,會將+ = /等也進行編碼嗎

=不會編碼,其他的會

『陸』 java uri 編碼 和urlencode 編碼的區別

String mytext = java.net.URLEncoder.encode("中國", "utf-8");
String mytext2 = java.net.URLDecoder.decode(mytext, "utf-8");

這兩條語句在同一個頁面中的話,得到的結果是:
mytext: %E4%B8%AD%E5%9B%BD
mytex2: 中國

String zhongguo=new String(request.getParameter("zhongguo").getBytes("iso8859_1"));
zhongguo=java.net.URLDecoder.decode(zhongguo,"utf-8");

『柒』 如何用Java實現URLEncode

無需用抄Java實現URLEncode,jdk有已經實現了。
用法如下:
String urlStr = java.net.URLEncoder.encode("hello,網路", "GBK");

輸出urlStr:%C8%CE%BA%F0%B2%F0%B0%A1
String keyWord = java.net.URLDecoder.decode("%C8%CE%BA%F0%B2%F0%B0%A1
", "GBK");
輸出keyWord:hello,網路

『捌』 地址欄中有漢字,java如何利用對url編碼求解

地址欄中出現漢字的情況有兩種,一種是漢字出現在URL的路徑部分,一種是漢字出現在URL的傳參的部分,第二種情況的時候必須採用編碼後傳參,接受時解碼的方式完成傳參。js中編碼有escape(),encodeURI(),encodeURIComponent()三個常用的方法,escape()常常用在提交頁面和處理頁面的編碼格式相同的情況下(比如它們都是GB2312),encodeURI()和encodeURIComponent()的用法基本相同,區別在於encodeURIComponent()也對"?"等特殊字元進行編碼。
一開始遇到中文參數的時候,使用encodeURI()進行了一遍編碼,傳過去後,發現解碼出現問題,於是想到可能是編碼方法使用錯誤,於是使用escape()方法,這時發現解碼時拋出isHexDigit異常。藉助網路搜索isHexDigit異常,
發現原來,是escape()方法造成了異常,同時了解了瀏覽器傳遞地址的一些原理,在瀏覽器地址欄里,瀏覽器認為%是個轉義字元,瀏覽器會把%與%之間的編碼,兩位兩位取出後進行解碼,然後再傳遞給處理頁面,
然後由處理頁面進行再次解碼。由此我想到一直使用encodeURI方法是正確的,只是需要使用兩次encodeURI方法,例如encodeURI(encodeURI("中文"));第一次是把中文編碼成%xy的格式,
第二次是對%xy中的%進行編碼,%編碼成%25。整個傳參過程大體應該是:提交頁面使用encodeURI(encodeURI("中文"))編碼,把最後的編碼結果%25xy傳遞給處理頁面的過程中,瀏覽器獲取URL地址
(注意openModelDialog方法,瀏覽器獲取不到參數編碼)後解碼成%xy,然後把%xy傳遞給處理頁面,處理頁面使用URLDecoder.decode(request.getParameter("參數名"),"UTF-8");完成解碼。
總結:1、漢字出現在URL路徑部分的時候不需要編碼解碼;

『玖』 javahttpclient怎麼設置url編碼

可以把你的這來段代碼簡源化一下<pre t="code" l="java"> ins = method.getResponseBodyAsStream();
byte[] b = new byte[1024];
int r_len = 0;
while ((r_len = ins.read(b)) > 0)
{
result.append(new String(b, 0, r_len, method.getResponseCharSet()));
}替換為:
<pre t="code" l="java">byte[] ba = method.getResponseBody();
String str= new String(ba,"UTF-8"); //得到指定編碼格式的字元串這里的str就是你的返回值。這段代碼我使用過,可以解決亂碼問題

『拾』 java的url編碼

URL編碼如果是英文和數字,輸出的當然相同了,要用符號或者漢字才能看到變化