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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

获取相册所有uri_URI转码

發布時間:2025/4/5 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 获取相册所有uri_URI转码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、 encodeURI來解決URL傳遞時的中文問題

1.前端:

var url = baseContext+"xxxx.action?parm="+encodeURI(encodeURI('中'));

2.后端:

String supName = request.getParameter("parm"); supName = URLDecoder.decode(supName, "UTF-8");

二、特殊字符在傳輸過程中被轉義編碼( %+ASCII(16進制)碼值 )

有些符號在URL中是不能直接傳遞的,如果要在URL中傳遞這些特殊符號,那么就要使用他們的編碼了。編碼的格式為:%加字符的ASCII碼,即一個百分號%,后面跟對應字符的ASCII(16進制)碼值。例如 空格的編碼值是"%20"。

如果不使用轉義字符,這些編碼就會當URL中定義的特殊字符處理。

開發時有時服務端返回的json中包含url,url中可能含有一些特殊字符,這些特殊字符在傳輸的過程中可能會被轉義成編碼。這時候我們拿到手里要如何轉換回去呢,先看下那些字符可能會被編碼

三、

做頁面開發的時候有時候,會使用Javascript的escape(),encodeURIComponent(),encodeURI ()這三個函數進行URL編碼,防止特殊字符接收不到。

1.使用encodeURLComponent傳遞參數

function URLencode(sStr) {sStr = escape(escape(sStr));location.href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent("http://cang.baidu.com/bruce42")+);}

2. 進行URL跳轉的時候整體使用encodeURL

function URLencode(sStr) {Location.href=encodeURI("http://cang.baidu.com/do/s?word=京東&ct=21"); }

3.js使用數據時可以用escape(個人用的比較多)編碼功能比較強大

Javascript中的escape()是將中文按ISO-8859-1字符集進行URL編碼的,那樣通過 request.getParameter()是能直接獲取到請求參數的,但后來的Javascript將escape()換成了Unicode字符集編 碼,如此一來,在JSP和Servlet中就沒法直接拿到請求參數了,而且此時的request獲得的參數值都是空值,

四、

總結:URL編碼轉換函數:

escape() 不常用

encodeURI() 對整體URL編碼 常用 不編碼! @ # $ & ( ) = : / ; ? + 等符號

encodeURIComponent() 這種串不建議使用此編碼http://www.oschina.net/search?scope=bbs

  • escape() : 采用ISO Latin字符集對指定的字符串進行編碼。所有的空格符、標點符號、特殊字符以及其他非ASCII字符都會轉化成%xx格式的字符編碼(xx代表此字符在字符集表里編碼的16進制數字)。比如,空格符的對應編碼是%20。不會對ASCII字符和數字進行編碼。不會被此方法編碼的字符:@ * / +,反向編碼函數:unescape()。
  • 2. encodeURI(): 把URI字符串采用UTF-8編碼格式轉化成escape格式的字符串。不會被此方法編碼的字符:! @ # $ & ( ) = : / ; ? + ',反向編碼函數:decodeURI()。

    var str1 = encodeURI('http://www.oschina.net/search?scope=bbs&q=C語言') str1 //"http://www.oschina.net/search?scope=bbs&q=C%E8%AF%AD%E8%A8%80" decodeURI(str1) //"http://www.oschina.net/search?scope=bbs&q=C語言"

    3. encodeURIComponent():把URI字符串采用URF-8編碼格式轉化成escape格式的字符串。與encodeURI相比,這個函數會將更多的字符進行編碼,比如"/"等字符。所以如果字符串里面包含了URI的幾個部分的話,不能用這個來進行編碼。否則“/”字符被編碼后將URL顯示錯誤。不會被此方法編碼的字符:! * ( ),反向編碼函數:decodeURIComponent()。

    encodeURIComponent('1@2') "1%402" decodeURIComponent("1%402") "1@2"

    .

    TIPS: 瀏覽器不會自動轉碼

  • PC瀏覽器,不會動URL中的參數、 cookie、 以及項目中顯示的字符串,進行任何的自動轉碼。
  • 有可能 我們的項目是UTF-8的,但是用戶的瀏覽器編碼設置 是其他的編碼方式。可能會自動轉碼,待測試。
  • 3. 多次編碼,多次轉碼 涉及到用戶名時

    decodeURIComponent(decodeURIComponent(decodeURIComponent('jinyifan%252020321'))) "jinyifan 20321" decodeURIComponent(decodeURIComponent('jinyifan%252020321')) "jinyifan 20321" decodeURIComponent('jinyifan%252020321') "jinyifan%2020321"

    解碼多次一個不帶%25(這是 %號的編碼)的串時,多次解碼結果是一樣的。

    decodeURIComponent('jinyifan%20321') "jinyifan 321" decodeURIComponent(decodeURIComponent('jinyifan%20321')) "jinyifan 321" decodeURIComponent(decodeURIComponent(decodeURIComponent('jinyifan%20321'))) "jinyifan 321"

    編碼多次一個帶空格的串 是會產生大量的%25的

    encodeURIComponent('jinyifan 321') "jinyifan%20321" encodeURIComponent(encodeURIComponent('jinyifan 321') ) "jinyifan%2520321" encodeURIComponent(encodeURIComponent(encodeURIComponent('jinyifan 321') )) "jinyifan%252520321" encodeURIComponent(encodeURIComponent(encodeURIComponent(encodeURIComponent('jinyifan 321') ))) "jinyifan%25252520321"

    前端給后端傳用戶名串時,編碼幾次合理?

    注意:

  • 鑒于以上存在的問題,在服務端解碼過程中,需要謹慎考慮各種場景下(包括前端、領域)的編解碼方式、次數(夾雜BASE64編碼)等因素進行解碼。
  • var id="aVUAAAACS+uJkta7";encodeURIComponent(id) "aVUAAAACS%2BuJkta7"encodeURIComponent(encodeURIComponent(id)); "aVUAAAACS%252BuJkta7"

    在前端與后端傳遞數據時,會遇到這樣一個問題,如果傳遞的字符串中含有特殊字符

    如:+ 空格/ ? % & = #

    如果不進行特殊處理,會發生數據丟失的現象。

    例如:我在前端傳入后端"aVUAAAACS+uJkta7" 但是后端接收的時候接收到的是

    "aVUAAAACS uJkta7" ,特殊字符“+”丟失了。

    解決的辦法就是:

    前端在傳遞之前,檢查一下是否有特殊字符,如果有,進行一下轉換編碼操作。

    例如:前端部分

    var id="aVUAAAACS+uJkta7"; id = encodeURIComponent(encodeURIComponent(id));

    后端在接收字符串時,檢查是否有編碼的形式,如果有,進行解碼。這樣就完成了特殊字符的傳遞。

    后端部分:

    String id = pd.getString("id");//獲取id id = java.net.URLDecoder.decode(id,"UTF-8");//特殊字符解碼

    這樣id就成功完整地由前端傳入后端了。

    ——————————————————————————————————————

    decodeURI與decodeURIComponent區別

    1. 概念:

    URI: Uniform ResourceIdentifiers,通用資源標識符

    Global對象的encodeURI()和encodeURIComponent()方法可以對URI進行編碼,以便發送給瀏覽器。有效的URI中不能包含某些字符,例如空格。而這URI編碼方法就可以對URI進行編碼,它們用特殊的UTF-8編碼替換所有無效的字 符,從而讓瀏覽器能夠接受和理解。

    其中encodeURI()主要用于整個URI(例如,http://www.jxbh.cn/illegal value.htm),而encode-URIComponent()主要用于對URI中的某一段(例如前面URI中的illegal value.htm)進行編碼。它們的主要區別在于,encodeURI()不會對本身屬于URI的特殊字符進行編碼,例如冒號、正斜杠、問號和井字號;而encodeURIComponent()則會對它發現的任何非標準字符進行編碼。來看下面的例子:
    var uri="http://www.jxbh.cn/illegal value.htm#start";
    //”http: //http://www.jxbh.cn/illegal%20value .htm#s tart”
    alert(encodeURI (uri)):
    //”http% 3A%2F%2Fwww.jxbh.cn%2 Fillegal%2 0value. htm%23 start”
    alert( encodaURIComponent (uri));

    使用encodeURI()編碼后的結果是除了空格之外的其他字符都原封不動,只有空格被替換成了%20。而encodeURIComponent()方法則會使用對應的編碼替換所有非字母數字字符。這也正是可以對整個URI使用encodeURI(),而只能對附加在現有URI后面的字符串使用encodeURIComponent()的原因所在。一般來說,我們使用encodeURIComponent()方法的時候要比使用encodeURI()更多,因為在實踐中更常見的是對查詢字符串參數而不是對基礎URL進行編碼.

    經我的觀測,很多網站的cookie在進行編碼的時候,是encodeURIComponent格式的,所以應該使用decodeURIComponent()進行解碼

    總結

    以上是生活随笔為你收集整理的获取相册所有uri_URI转码的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。