日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

URLEncode编码和URLDecode解码

發(fā)布時(shí)間:2023/12/4 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 URLEncode编码和URLDecode解码 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1 String text1 = java.net.URLEncoder.encode("中國" ,"utf-8" ); 2 String text2 = java.net.URLDecoder.decode(text1,"utf-8");

?

(1).URLEncoder 需要注意:這個(gè)方法編碼了符號,“\” ,“&”,“=”,和“:”,并把空格(“ ”)轉(zhuǎn)換成了(+)。它不會(huì)嘗試著去規(guī)定在一個(gè)URL中這些字符怎樣被使用。由此,你不得不分塊編碼你的URL,而不是把整個(gè)URL一次傳給這個(gè)方法。

  例如,假設(shè)你想編碼這個(gè)string:

  pg=q&kl=XX&stype=stext&q=+"Java+I/O"&search.x=38&search.y=3

  這段代碼對其進(jìn)行編碼:  

1 String query = java.net.URLEncoder.encode( "pg=q&kl=XX&stype=stext&q=+"Java+I/O"&search.x=38&search.y=3"); 2 3 System.out.println(query);

  不幸的是,得到的輸出是:

  pg%3Dq%26kl%3DXX%26stype%3Dstext%26q%3D%2B%22Java%2BI%2FO%22%26search.x%3D38%26search.y%3D3

  出現(xiàn)這個(gè)問題就是方法URLEncoder.encode( ) 在進(jìn)行盲目地編碼。它不能區(qū)分在URL或者查詢string中被用到的特殊字符(像前面string中的“=”,和“&”)和確實(shí)需要被編碼的字符。所以URL需要一次只編碼一塊。

?

  例如正確的拼接方法:    1 private static String _MakeURL(String p_url, Map<String, Object> params) throws UnsupportedEncodingException { 2 StringBuilder url = new StringBuilder(p_url); 3 // Strng.indexOf(substring) //搜索String中的substring,默認(rèn)從0位開始; 4 5 if(url.indexOf( "?")<0) 6 url.append( '?'); 7 8 for(String name : params.keySet()){ 9 url.append( '&'); 10 url.append(name); 11 url.append( '='); 12 //url.append(String.valueOf(params.get(name))); 13 //做URLEncoder處理 14 url.append(URLEncoder. encode(String.valueOf (params.get(name)), "UTF-8")); 15 } 16 17 return url.toString().replace( "?&", "?"); 18 } ? (2).URLDecoder   注意:由于這個(gè)方法沒有觸及到非轉(zhuǎn)義字符,所以你可以把整個(gè)URL作為參數(shù)傳給該方法<如下面的qerry>。不用像之前那樣分塊進(jìn)行,依然可以得到你想要的正確的解碼結(jié)果。例如:    1   String input = "http://www.altavista.com/cgi-bin/"+"qerry?pg=q&kl=XX&stype=stext&q=%2B%22Java+I%2FO%22&search.x=38&search.y=3";   2     try {   3        String output = java.net.URLDecoder.decode(input, "UTF-8");   4        System.out.println(output);  5      } ? 綜上所述:UrlEncoder一次只能編碼一塊,然后拼接起來,成為一個(gè)url ; 而UrlDecoder可以一次性解碼整個(gè)鏈接。

轉(zhuǎn)載于:https://www.cnblogs.com/wufeng0927/p/5335367.html

總結(jié)

以上是生活随笔為你收集整理的URLEncode编码和URLDecode解码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。