最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

escape、encodeURI 和 encodeURIComponent 的區(qū)別

 更新時(shí)間:2009年03月02日 20:08:37   作者:  
escape(), encodeURI()和encodeURIComponent()是在Javascript中用于編碼字符串的三個(gè)常用的方法,而他們之間的異同卻困擾了很多的Javascript初學(xué)者,今天我就在這里對這三個(gè)方法詳細(xì)地分析與比較一下。

escape() 方法

MSDN JScript Reference中如是說:

The escape method returns a string value (in Unicode format) that contains the contents of [the argument]. All spaces, punctuation, accented characters, and any other non-ASCII characters are replaced with %xx encoding, where xx is equivalent to the hexadecimal number representing the character. For example, a space is returned as "%20."

鄙人譯:escape方法以Unicode格式返回一個(gè)包含傳入?yún)?shù)內(nèi)容的string類型的值。 Escape方法會將傳入?yún)?shù)中所有的空格、標(biāo)點(diǎn)符號、重音字符以及其它任何非ASCII字符替換為%xx的編碼形式,其中xx與其所表示的字符的16進(jìn)制數(shù)表示形式相同。如空格字符的16進(jìn)制表示形式為0x20,則此時(shí)xx應(yīng)為20,即escape(‘ ') 返回“%20”。

Mozilla Developer Core Javascript Guide中如是說:

The escape and unescape functions let you encode and decode strings. The escape function returns the hexadecimal encoding of an argument in the ISO Latin character set. The unescape function returns the ASCII string for the specified hexadecimal encoding value.

鄙人譯:escape和unescape方法能夠幫助你編碼和解碼字符串。escape方法對于ISO Latin字符集中的字符組成的參數(shù),返回其16進(jìn)制編碼。相對應(yīng)的,unescape方法則能將16進(jìn)制編碼形式的參數(shù)轉(zhuǎn)化成為其ASCII碼形式。

encodeURI()方法

MSDN JScript Reference中如是說:

The encodeURI method returns an encoded URI. If you pass the result to decodeURI, the original string is returned. The encodeURI method does not encode the following characters: ":", "/", ";", and "?". Use encodeURIComponent to encode these characters.

鄙人譯:encodeURI方法返回一個(gè)經(jīng)過編碼的URI。如果將encodeURI方法的編碼結(jié)果傳遞給decodeURI方法作參數(shù),則能得到原始的未編碼的字符串。需要注意到是encodeURI方法不編碼如下字符":", "/", ";", and "?"。如果想要編碼這些字符,請使用encodeURIComponent方法。

Mozilla Developer Core Javascript Guide中如是說:

Encodes a Uniform Resource Identifier (URI) by replacing each instance of certain characters by one, two, or three escape sequences representing the UTF-8 encoding of the character.

鄙人譯:通過將每個(gè)屬于特定的字符集合的字符替換為一個(gè)、兩個(gè)或者三個(gè)(為什么是“一個(gè)、兩個(gè)或者三個(gè)”本人也沒有搞懂,望高人賜教)使用UTF-8編碼來表示這個(gè)字符的escape序列來編碼一個(gè)URI。如 ~!@#$%^&*(){}[]=:/,;?+\'"\\ 將被替換為 ~!@#$%25%5E&*()%7B%7D%5B%5D=:/,;?+'%22%5C

encodeURIComponent()方法

MSDN JScript Reference中如是說:

The encodeURIComponent method returns an encoded URI. If you pass the result to decodeURIComponent, the original string is returned. Because the encodeURIComponent method encodes all characters, be careful if the string represents a path such as /folder1/folder2/default.html. The slash characters will be encoded and will not be valid if sent as a request to a web server. Use the encodeURI method if the string contains more than a single URI component.

鄙人譯:encodeURIComponent方法返回一個(gè)編碼過的URI。如果將encodeURIComponent方法的編碼結(jié)果傳遞給encodeURIComponent方法作參數(shù),則能得到原始的未編碼的字符串。因?yàn)閑ncodeURIComponent方法會編碼所有的字符,所以如果待編碼的字符串是用來表示一個(gè)路徑(如/dir1/dir2/index.htm)時(shí),就一定要小心使用了?!?'符號會被其編碼之后,將不再是一個(gè)有效的路徑標(biāo)識符,所以不能被web服務(wù)器正確地識別。當(dāng)字符串包含一個(gè)單獨(dú)的URI component(指?后面的請求參數(shù))的時(shí)候,請使用此方法。

Mozilla Developer Core Javascript Guide中如是說:

Encodes a Uniform Resource Identifier (URI) component by replacing each instance of certain characters by one, two, or three escape sequences representing the UTF-8 encoding of the character.

鄙人譯:通過將每個(gè)屬于特定的字符集合的字符替換為一個(gè)、兩個(gè)或者三個(gè)(為什么是“一個(gè)、兩個(gè)或者三個(gè)”本人也沒有搞懂,望高人賜教)使用UTF-8編碼來表示這個(gè)字符的escape序列來編碼一個(gè)URIComponent。

有什么區(qū)別?何時(shí)使用?

通過上面的介紹可以看出,MS的文檔明顯要比Mozilla詳細(xì)、易懂一些,但是它們表達(dá)的都是一個(gè)意思。但是escape(), encodeURI()和 encodeURIComponent()有什么異同,它們分別適用于那種特定的情況呢?

escape方法并不編碼字符+。而我們知道,在用戶提交的表單字段中,如果有空格,則會被轉(zhuǎn)化為+字符,而服務(wù)器解析的時(shí)候則會認(rèn)為+號代表空格。由于這個(gè)缺陷,escape方法并不能正確地處理所有的非ASCII字符,你應(yīng)當(dāng)盡量避免使用escape方法,取而代之,你最好選擇encodeURIComponent()方法。

escape()不編碼的字符:@*/+

相對于使用escape方法,使用encodeURI方法會顯得更專業(yè)一些。當(dāng)你需要編碼一整個(gè)URI的時(shí)候,你可以使用此方法,因?yàn)閁RI中的合法字符都不會被編碼轉(zhuǎn)換。需要注意到是字符'也是URI中的合法字符,所以也不會被編碼轉(zhuǎn)換。

encodeURI() 不編碼的字符: ~!@#@{content}*()=:/,;?+'

encodeURIComponent方法在編碼單個(gè)URIComponent(指請求參數(shù))應(yīng)當(dāng)是最常用的。需要注意到是字符'也是URI中的合法字符,所以也不會被編碼轉(zhuǎn)換。

encodeURIComponent()不編碼的字符: ~!*()'

相關(guān)文章

  • js 通用訂單代碼

    js 通用訂單代碼

    對于訂單,想必大家并不陌生吧,下為大家介紹下使用js實(shí)現(xiàn)的訂單,感興趣的朋友可以參考下
    2013-12-12
  • javascript事件循環(huán)event loop的簡單模型解釋與應(yīng)用分析

    javascript事件循環(huán)event loop的簡單模型解釋與應(yīng)用分析

    這篇文章主要介紹了javascript事件循環(huán)event loop的簡單模型解釋與應(yīng)用,結(jié)合實(shí)例形式分析了javascript事件循環(huán)event loop的與模型原理及使用技巧,需要的朋友可以參考下
    2020-03-03
  • 鼠標(biāo)懸浮停留三秒后自動顯示大圖js代碼

    鼠標(biāo)懸浮停留三秒后自動顯示大圖js代碼

    這篇文章主要介紹了鼠標(biāo)懸浮停留三秒后顯示大圖,在網(wǎng)頁中還是比較實(shí)用的,下面是示例代碼
    2014-09-09
  • 微信小程序自定義tabBar的踩坑實(shí)踐記錄

    微信小程序自定義tabBar的踩坑實(shí)踐記錄

    這篇文章主要給大家介紹了關(guān)于微信小程序自定義tabBar的踩坑實(shí)踐記錄,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 通俗易懂地解釋JS中的閉包

    通俗易懂地解釋JS中的閉包

    本文通過示例代碼給大家介紹了js中的閉包,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2017-10-10
  • Javascript 是你的高階函數(shù)(高級應(yīng)用)

    Javascript 是你的高階函數(shù)(高級應(yīng)用)

    這篇文章主要介紹了Javascript 是你的高階函數(shù) ,需要的朋友可以參考下
    2015-06-06
  • JavaScript實(shí)現(xiàn)捕獲鼠標(biāo)坐標(biāo)

    JavaScript實(shí)現(xiàn)捕獲鼠標(biāo)坐標(biāo)

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)捕獲鼠標(biāo)坐標(biāo),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • 在Javascript操作JSON對象,增加 刪除 修改的簡單實(shí)現(xiàn)

    在Javascript操作JSON對象,增加 刪除 修改的簡單實(shí)現(xiàn)

    下面小編就為大家?guī)硪黄贘avascript操作JSON對象,增加 刪除 修改的簡單實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • avalonjs制作響應(yīng)式瀑布流特效

    avalonjs制作響應(yīng)式瀑布流特效

    瀑布流主要應(yīng)用在圖片展示頁面上。如果有一大批圖片需要展示,原始圖片尺寸不一致,又希望每張圖片都能不剪裁,完整顯示,那么就要給圖片規(guī)定一個(gè)寬度,解放它們的高度。利用網(wǎng)頁高度不限這個(gè)特性,充分利用頁面的空間,盡可能的展示多的圖片。下面我們就來詳細(xì)探討下
    2015-05-05
  • Javascript ES6中對象類型Sets的介紹與使用詳解

    Javascript ES6中對象類型Sets的介紹與使用詳解

    這篇文章主要給大家介紹了關(guān)于Javascript ES6中Sets的介紹與使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-07-07

最新評論

双牌县| 手游| 奉节县| 乾安县| 昆山市| 祁东县| 贵定县| 岳西县| 拉萨市| 江山市| 元朗区| 崇阳县| 潜山县| 青岛市| 错那县| 郸城县| 甘洛县| 万全县| 瑞昌市| 醴陵市| 洛南县| 张家川| 竹北市| 东乌| 滕州市| 宜州市| 株洲县| 任丘市| 会理县| 睢宁县| 陵水| 祁东县| 林周县| 康平县| 潞西市| 建德市| 泾川县| 繁昌县| 双辽市| 岳阳市| 桂林市|