encodeURI()
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
encodeURI() 彿°éè¿å°ç¹å®åç¬¦çæ¯ä¸ªå®ä¾æ¿æ¢ä¸ºä¸ä¸ªã两个ã䏿å转ä¹åºåæ¥å¯¹ç»ä¸èµæºæ è¯ç¬¦ (URI) è¿è¡ç¼ç (该å符ç UTF-8 ç¼ç ä»
为å转ä¹åºå) ç±ä¸¤ä¸ª "代ç" åç¬¦ç»æ)ã
è¯æ³
encodeURI(URI)
åæ°
URI-
ä¸ä¸ªå®æ´ç URIã
è¿åå¼
ä¸ä¸ªæ°å符串ï¼è¡¨ç¤ºæä¾çå符串ç¼ç 为ç»ä¸èµæºæ è¯ç¬¦ (URI)ã
æè¿°
åå®ä¸ä¸ª URI æ¯å®æ´ç URIï¼é£ä¹æ é对é£äºä¿ççå¹¶ä¸å¨ URI ä¸æç¹æ®ææçå符è¿è¡ç¼ç ã
http://username:password@www.example.com:80/path/to/file.php?foo=316&bar=this+has+spaces#anchor
encodeURI 伿¿æ¢ææçå符ï¼ä½ä¸å
æ¬ä»¥ä¸å符ï¼å³ä½¿å®ä»¬å
·æéå½ç UTF-8 转ä¹åºåï¼
| ç±»å | å å« |
|---|---|
| ä¿çå符 | ; , / ? : @ & = + $ |
| é转ä¹çå符 | 忝 æ°å - _ . ! ~ * ' ( ) |
| æ°åç¬¦å· | # |
请注æï¼encodeURI èªèº«æ æ³äº§çè½éç¨äº HTTP GET æ POST 请æ±ç URIï¼ä¾å¦å¯¹äº XMLHTTPRequestsï¼å 为 "&", "+", å "=" ä¸ä¼è¢«ç¼ç ï¼ç¶èå¨ GET å POST 请æ±ä¸å®ä»¬æ¯ç¹æ®å符ãç¶èencodeURIComponentè¿ä¸ªæ¹æ³ä¼å¯¹è¿äºå符ç¼ç ã
å¦å¤ï¼å¦æè¯å¾ç¼ç ä¸ä¸ªéé« - ä½ä½å®æ´ç代çå符ï¼å°ä¼æåºä¸ä¸ª URIError é误ï¼ä¾å¦ï¼
// ç¼ç é« - ä½ä½å®æ´å符 ok
console.log(encodeURI("\uD800\uDFFF"));
// ç¼ç åç¬çé«ä½å符æåº "Uncaught URIError: URI malformed"
console.log(encodeURI("\uD800"));
// ç¼ç åç¬çä½ä½å符æåº "Uncaught URIError: URI malformed"
console.log(encodeURI("\uDFFF"));
å¹¶ä¸éè¦æ³¨æï¼å¦æ URL éè¦éµå¾ªè¾æ°çRFC3986æ åï¼é£ä¹æ¹æ¬å·æ¯è¢«ä¿çç (ç» IPv6)ï¼å æ¤å¯¹äºé£äºæ²¡æè¢«ç¼ç ç URL é¨å (ä¾å¦ä¸»æº)ï¼å¯ä»¥ä½¿ç¨ä¸é¢ç代ç ï¼
function fixedEncodeURI(str) {
return encodeURI(str).replace(/%5B/g, "[").replace(/%5D/g, "]");
}
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-encodeuri-uri> |