色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

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

escape() 方法

MSDN JScript Reference中如是說(shuō):

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類(lèi)型的值。 Escape方法會(huì)將傳入?yún)?shù)中所有的空格、標(biāo)點(diǎn)符號(hào)、重音字符以及其它任何非ASCII字符替換為%xx的編碼形式,其中xx與其所表示的字符的16進(jìn)制數(shù)表示形式相同。如空格字符的16進(jìn)制表示形式為0x20,則此時(shí)xx應(yīng)為20,即escape(‘ ') 返回“%20”。

Mozilla Developer Core Javascript Guide中如是說(shuō):

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方法對(duì)于ISO Latin字符集中的字符組成的參數(shù),返回其16進(jìn)制編碼。相對(duì)應(yīng)的,unescape方法則能將16進(jìn)制編碼形式的參數(shù)轉(zhuǎn)化成為其ASCII碼形式。

encodeURI()方法

MSDN JScript Reference中如是說(shuō):

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)過(guò)編碼的URI。如果將encodeURI方法的編碼結(jié)果傳遞給decodeURI方法作參數(shù),則能得到原始的未編碼的字符串。需要注意到是encodeURI方法不編碼如下字符":", "/", ";", and "?"。如果想要編碼這些字符,請(qǐng)使用encodeURIComponent方法。

Mozilla Developer Core Javascript Guide中如是說(shuō):

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.

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

encodeURIComponent()方法

MSDN JScript Reference中如是說(shuō):

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

Mozilla Developer Core Javascript Guide中如是說(shuō):

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.

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

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

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

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

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

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

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

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

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

JavaScript技術(shù)escape、encodeURI 和 encodeURIComponent 的區(qū)別,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 西宁市| 余江县| 含山县| 朔州市| 普安县| 于都县| 漳平市| 紫金县| 伊金霍洛旗| 灵宝市| 柳江县| 都匀市| 昌江| 垫江县| 长岛县| 盘山县| 承德县| 柳州市| 灵宝市| 永昌县| 阿拉善右旗| 萍乡市| 洛川县| 鄂尔多斯市| 博客| 安平县| 缙云县| 镇江市| 钦州市| 咸宁市| 天门市| 尼玛县| 丰城市| 慈溪市| 双城市| 弥勒县| 雅安市| 邳州市| 崇信县| 漯河市| 类乌齐县|