URL缂栫爜屽叏鎸囧崡锛氫粠鍏ラ棬鍒扮簿閫氱殑鍏ㄩ潰瑙f
胖袋鼠锟?/span>
2026-04-26
鍦╓eb�鍙戜腑锛RL缂栫爜鏄椤瑰熀�浣嗚嚦鍏抽噸瑕佺殑鎶�鏈�傚綋浣犻渶瑕佸湪URL涓紶閫掍腑鏂囧瓧绗︺�佺娈婄鍙凤紝鎴�呭鐞嗙敤鎴疯鍏ユ椂锛孶RL缂栫爜灏卞彉寰椾笉鍙垨缂恒�傜劧鑰岋紝寰堝�鍙戣�URL缂栫爜的悊瑙d粎鍋滅鍦ㄨ〃闈紝甯稿父囧埌涔辩爜锟?04閿欒鎴�呭畨鍏ㄩ棶棰樻椂涓嶇煡鎵�鎺?/p>
鏈枃灏嗗甫浣犳繁鍏ヤ簡瑙RL缂栫爜的伐浣滃師鐞嗐�佺佽鍒欍�佸父瑙佸簲ㄥ満鏅紝浠ュ強濡備綍g‘浣跨敤URL缂栬В佸伐鍏枫�傞�氳繃鏈枃的勫涔狅紝浣犲皢鑳藉娓垉鏈綑鍦板鐞嗗悇绉峌RL缂栫爜闂锟?/p>
涓�銆乁RL缂栫爜的鏈锟?/h2>
1. 浠�涔堟槸URL缂栫爜锟?/h3>
URL缂栫爜锛圲RL Encoding锛紝涔熺О涓虹櫨鍒嗗彿缂栫爜锛ercent-Encoding锛紝鏄URL涓殑鐗规畩瀛杞崲涓哄彲鍦ㄤ簰鑱旂綉涓婂畨鍏ㄤ紶杈撶殑鏍煎紡的勬鍒躲�傜敱浜嶶RL标准瑙勫畾鍙兘浣跨敤涓�閮ㄥ垎ASCII瀛锛屽洜ら渶瑕佸皢闈濧SCII瀛鍜岀壒娈婂瓧绗﹁浆鎹负甯︾鍒嗗彿锟�?锛缂�的崄鍏繘鍒舵牸忥拷?/p>
URL缂栫爜的牳蹇冩�濇兂鏄
- 灏嗘瘡涓瓧绗﹁浆鎹负鍏跺搴旂殑UTF-8瀛妭搴忓
- 灏嗘瘡涓瓧鑺傝〃绀轰负%XX的勫舰忥紝鍏朵腑XX鏄妭的勫崄鍏繘鍒拷?/li>
- 淇濈鏌愪簺涓嶇侊紙瀛瘝銆佹暟拷?_.~锟�?/li>
2. URL缂栫爜的巻锟?/h3>
URL缂栫爜鏈�鍒濇槸鍦≧FC 1738涓畾涔夌殑锛屽悗鏉ュ湪RFC 3986涓繘琛屼簡鏇存柊銆傛渶鍒濆彧鏀寔ASCII瀛锛屼絾闅忕潃浜掕仈缃戠殑鍏ㄧ悆鍖栵紝闇�瑕佹鎸佹洿澶氱殑瀛闆嗭紝鍥犳UTF-8缂栫爜鎴负浜嗘爣鍑嗭?/p>
3. URL缂栫爜的瑕侊?/h3>
URL缂栫爜涔墍浠ュ繀瑕侊紝涓昏鏈互涓嚑涓師鍥狅
- 淇濈瀛鍐茬獊锟?/strong>URL涓湁浜涘瓧绗︽湁鐗规畩鍚箟锛堝?锟�?锟�?绛級锛岀佸彲浠ラ伩鍏嶈繖浜涘瓧绗﹁璇В
- 闈濧SCII瀛寔锟�?/strong>URL闇�瑕佹鎸佷腑鏂囥�佹棩鏂囩瓑闈SCII瀛
- 鏁版嵁浼犺緭瀹叏锟�?/strong>鏌愪簺鐗规畩瀛鍙兘艰嚧叏闂鎴栦紶杈撻敊锟?/li>
- 鏍煎紡屾暣鎬э繚URL鍦ㄥ悇绉嶆祻瑙堝櫒鍜屾湇鍔櫒涔棿g‘瑙f
浜屻�乁RL缂栫爜瑙璇﹁В
1. 淇濈瀛涓庝笉缂爜
鏍嵁RFC 3986锛屼互涓瓧绗湪URL涓湁鐗规畩鍚箟锛岃绉负"淇濈瀛"锟�?/p>
! # $ & ' ( ) * + , / : ; = ? @ [ ]
浠ヤ笅琚О锟�?闈炰繚鐣欏瓧锟�?锛屽湪URL涓彲浠ョ洿鎺ヤ娇鐢紝涓嶉渶瑕佺紪侊細
A-Z a-z 0-9 - _ . ~
2. 缂栫爜杩囩▼
URL缂栫爜的叿浣撴楠わ
- 瀛杞崲锟?/strong>灏嗗緟缂爜杞崲涓哄叾UTF-8瀛妭搴忓
- 瀛妭缂栫爜锟?/strong>灏嗘瘡涓瓧鑺傝浆鎹%XX的勫舰锟?/li>
- 绌烘牸澶悊锟?/strong>绌烘牸鍙互缂栫爜锟?20锟�?鍙凤紙浼犵粺鏂瑰紡锟?/li>
缂栫爜绀轰緥锛氱佷腑鏂囧瓧锟?"浣犲"
姝ラ1锛氳幏鍙栧瓧绗︾殑Unicode佺偣
锟�? U+4F60 (鍗佽繘锟? 20154)
锟�? U+597D (鍗佽繘锟? 22909)
姝ラ2锛氳浆鎹负UTF-8瀛妭搴忓
锟�? E4 BD A0 (3涓瓧锟?
锟�? E5 A5 BD (3涓瓧锟?
姝ラ3锛氳浆鎹负鐧惧垎鍙紪锟�?/p>
%E4%BD%A0%E5%A5%BD
3. 歌瀛的勭侊拷?/h3>
浠ヤ笅鏄浜涘父瑙佸瓧绗︾殑URL缂栫爜鍊硷細
绌烘: %20 锟�?+
!: %21
#: %23
$: %24
&: %26
+: %2B
, : %2C
/: %2F
: : %3A
;: %3B
=: %3D
?: %3F
@: %40
[: %5B
]: %5D
涓�乪ncodeURI涓巈ncodeURIComponent的勫锟�?/h2>
1. encodeURI
encodeURI()ㄤ簬缂栫爜屾暣的刄RL锛屽畠浼繚鐣橴RL涓殑鐗规畩缁撴瀛锟�?/p>
- 涓嶇侊細瀛瘝銆佹暟拷? _ . ~ ! ( ) * ' , ; : @ & = + $ , # ? /
- 缂栫爜锛墍鏈夐潪ASCII瀛锛屼互鍙婂湪URL涓病鏈夌娈婂惈涔殑瀛
// JavaScript轰緥
const url = 'https://example.com/鎼滅?q=浣犲ソ涓';
const encoded = encodeURI(url);
console.log(encoded);
// 杈撳: https://example.com/%E6%90%9C%E7%B4%A2?q=%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C
// 娉ㄦ剰锛枩鏉�佸啋鍙风瓑淇濈瀛鏈缂
2. encodeURIComponent
encodeURIComponent()ㄤ簬缂栫爜URL的勭粍鎴愰儴鍒嗭紝冧細缂爜鎵�鏈夌娈婂瓧绗︼
- 涓嶇侊細瀛瘝銆佹暟拷? _ . ~
- 缂栫爜锛墍鏈夊叾浠栧瓧绗︼紝鍖呮淇濈瀛
// JavaScript轰緥
const query = '浣犲ソ涓&q=1';
const encoded = encodeURIComponent(query);
console.log(encoded);
// 杈撳: %E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C%26q%3D1
// 娉ㄦ剰锟?锟�?借缂栫爜锟?
3. 濡備綍閫夋
夋encodeURI杩樻槸encodeURIComponent鍙栧喅浜庝綘的勪娇鐢ㄥ満鏅
- 浣跨encodeURI锟�?/strong>缂栫爜屾暣的刄RL锛屼絾闇�瑕佷繚鐣橴RL的勭粨锟?/li>
- 浣跨encodeURIComponent锟�?/strong>缂栫爜URL涓殑鏌鍙傛暟銆佽矾勬绛夌粍鎴愰儴锟?/li>
// 姝g‘的娇鐢ㄦ柟锟�?
const baseUrl = 'https://example.com/search';
const searchTerm = '浣犲ソ涓';
const page = 1;
// 浣跨encodeURI缂栫爜屾URL
const fullUrl = encodeURI(`${baseUrl}?q=${searchTerm}&page=${page}`);
// 杈撳: https://example.com/search?q=%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C&page=1
// 浣跨encodeURIComponent缂栫爜鏌鍙傛暟
const encodedTerm = encodeURIComponent(searchTerm);
const queryString = `q=${encodedTerm}&page=${page}`;
// 杈撳: q=%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C&page=1
鍥涖�乁RL缂栫爜的簲鐢ㄥ満锟�?/h2>
1. 鏌ヨ涓插锟?/h3>
鍦║RL鏌ヨ涓蹭腑浼犻�掑弬鏁版椂锛岄渶瑕佸鍙傛暟鍊艰繘琛岀侊細
// 鍦烘櫙锛悳绱㈠锟?
const searchQuery = 'Python缂栫▼鏁欑▼';
const url = `https://example.com/search?q=${encodeURIComponent(searchQuery)}`;
// 杈撳: https://example.com/search?q=Python%E7%BC%96%E7%A8%8B%E6%95%99%E7%A8%8B
2. URL璺緞缂
鍦║RL璺緞涓寘鍚腑鏂囧瓧绗︽垨鐗规畩瀛鏃堕渶瑕佺紪侊細
// 鍦烘櫙锛枃浠朵笅锟�?
const filename = '骞村害鎶ュ憡-2026.pdf';
const url = `https://example.com/downloads/${encodeURIComponent(filename)}`;
// 杈撳: https://example.com/downloads/%E5%B9%B4%E5%BA%A6%E6%8A%A5%E5%91%8A-2026.pdf
3. 琛ㄥ崟鎻
HTML琛ㄥ崟鎻氦鏃讹紝娴忚鍣ㄤ細鑷姩暟鎹繘琛孶RL缂栫爜锟?/p>
4. 鍝堝笇Fragment澶勭
URL涓殑鍝堝笇Fragment锟�?鍚庨潰的儴鍒級涔熼渶瑕佹纭紪侊細
// 鍦烘櫙锛氶闈㈠唴瀵艰
const section = '歌闂';
const url = `https://example.com/help#${encodeURIComponent(section)}`;
// 杈撳: https://example.com/help#%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98
浜斻�乁RL缂栫爜的伐鍏蜂娇锟�?/h2>
1. 在线URL缂栬В佸伐锟�?/h3>
浣跨敤在线URL缂栬В佸伐鍏峰彲浠ュ揩熻繘琛岀佸拰瑙g爜鎿嶄綔锟�?/p>
🦘憠 绔嵆浣跨敤锟�?/strong>URL 缂栬В锟�?/a>
2. 缂栫▼璇█涓殑URL缂栫
JavaScript
// 缂栫
const text = '浣犲ソ涓';
const encoded = encodeURIComponent(text);
console.log(encoded); // "%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C"
// 瑙g
const decoded = decodeURIComponent(encoded);
console.log(decoded); // "浣犲ソ涓"
// 瀹屾URL缂栫
const url = 'https://example.com/search?q=' + encodeURIComponent('娴');
console.log(url); // "https://example.com/search?q=%E6%B5%8B%E8%AF%95"
Python
from urllib.parse import urlencode, quote, quote_plus, unquote, unquote_plus
# 鍩烘湰缂
text = '浣犲ソ涓'
encoded = quote(text)
print(encoded) # "%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C"
# 浣跨quote_plus锛堢┖鏍肩紪佷负+锟�?
encoded_plus = quote_plus(text)
print(encoded_plus) # "%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C"
# URL鍙傛暟缂
params = {'q': '娴', 'page': 1}
encoded_params = urlencode(params)
print(encoded_params) # "q=%E6%B5%8B%E8%AF%95&page=1"
# 瑙g
decoded = unquote(encoded)
print(decoded) # "浣犲ソ涓"
Java
import java.net.URLEncoder;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
public class URLEncodingExample {
public static void main(String[] args) throws Exception {
String text = "浣犲ソ涓";
// 缂栫
String encoded = URLEncoder.encode(text, StandardCharsets.UTF_8.toString());
System.out.println(encoded); // "%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C"
// 瑙g
String decoded = URLDecoder.decode(encoded, StandardCharsets.UTF_8.toString());
System.out.println(decoded); // "浣犲ソ涓"
}
}
PHP
鍏�乁RL缂栫爜的父瑙棶棰樹笌瑙e喅鏂规
1. 涓枃涔辩爜闂
涓枃涔辩爜父鏄敱浜庣佸瓧绗﹂泦涓嶄鑷村鑷殑锟�?/p>
- 闂锟?/strong>鍚庣鎺ユ敹鍒殑鏄贡佹垨闂
- 鍘熷洜锟?/strong>鍓嶇浣跨UTF-8缂栫爜锛屽悗绔娇鐢℅BK瑙g
- 瑙e喅锟?/strong>繚鍓嶅悗绔娇ㄧ浉鍚岀殑闆嗭紙鎺ㄨ崘UTF-8锟�?/li>
2. 鍙岄噸缂爜闂
鍙岄噸缂爜浼鑷碪RL涓%琚娆$侊細
// 閿欒绀轰緥锛氬弻閲嶇紪锟�?
const term = '娴';
const encoded1 = encodeURIComponent(term); // "%E6%B5%8B%E8%AF%95"
const encoded2 = encodeURIComponent(encoded1); // "%25E6%25B5%258B%25E8%25AF%2595"
// 姝g‘绀轰緥锛氬彧缂爜涓�锟?
const correct = encodeURIComponent(term); // "%E6%B5%8B%E8%AF%95"
3. 绌烘牸缂爜闂
绌烘牸鍙互缂栫爜锟?20锟�?锛屼笉鍚屽満鏅湁涓嶅悓夋锟?/p>
- URL璺緞锟?/strong>绌烘牸蹇呴缂爜锟?20锛屼笉鑳界敤+
- 鏌ヨ鍙傛暟锟�?/strong>浼犵粺涓婄敤+锛岀幇浠f爣鍑嗘帹锟?20
- 琛ㄥ崟鎻氦锟?/strong>application/x-www-form-urlencoded鏍煎紡锟?琛ㄧず绌烘牸
4. 淇濈瀛琚敊璇紪锟�?/h3>
浣跨encodeURIComponent缂栫爜屾URL浼氬鑷翠繚鐣欏瓧绗﹁閿欒缂爜锟?/p>
// 閿欒绀轰緥
const url = 'https://example.com/search?q=娴';
const wrong = encodeURIComponent(url);
// 缁撴灉锛歨ttps%3A%2F%2Fexample.com%2Fsearch%3Fq%3D%E6%B5%8B%E8%AF%95
// URL缁撴琚鍧忎簡锟?
// 姝g‘绀轰緥
const correct = encodeURI(url);
// 缁撴灉锛歨ttps://example.com/search?q=%E6%B5%8B%E8%AF%95
// URL缁撴淇濇寔屾
5. Unicode瀛闂
鏌愪簺鑰佹棫的勭郴缁熷彲鑳戒笉鏀寔Unicode瀛锟�?/p>
- 闂锟?/strong>鍖呭惈Emoji鎴栫敓鍍诲瓧的刄RL鏃犳硶g‘澶
- 瑙e喅锟?/strong>浣跨敤鏇村箍娉涚殑闆嗘鎸侊紝鎴栧皢鐗畩瀛鏇挎崲涓篈SCII瀛
涓冦�乁RL缂栫爜的渶浣冲疄锟�?/h2>
1. 缂栫爜鏃舵満
- 瀹㈡埛绔細鍦ㄥ彂閫佽姹傚墠瑰鏁拌繘琛锟�?/li>
- 鏈嶅姟绔細鍦ㄦ帴鏀跺弬鏁板悗杩涜楠岃瘉鍜岃В锟?/li>
- 厤锟?/strong>涓嶈鍦ㄥ凡缂栫爜的瓧绗︿涓婂啀娆$锟�?/li>
2. 瀛闆嗛�
- 鎺ㄨ崘锟?/strong>粓浣跨敤UTF-8瀛锟�?/li>
- 鍏煎鎬э繚鍓嶅悗绔娇ㄧ浉鍚岀殑锟�?/li>
- 标准锟�?/strong>RFC 3986鎺ㄨ崘浣跨敤UTF-8
3. 瀹叏鑰冭
- 杈撳叆岃瘉锟?/strong>瀵筓RL鍙傛暟杩涜涓ユ牸的鍏ラ獙锟?/li>
- 闃叉娉ㄥ叆锟�?/strong>缂栫爜鍙互闃叉鏌簺绫诲的敞鍏ユ敾锟�?/li>
- XSS闃叉姢锟?/strong>鍦℉TML涓樉绀RL鍙傛暟鏃堕渶瑕侀澶锟�?/li>
4. ц兘浼樺
- 厤杩暱URL锟�?/strong>URL鏈暱搴﹂檺鍒讹紙父锟?048瀛锟�?/li>
- 浣跨POST锟�?/strong>瀵簬澶ч噺鏁版嵁锛岃�檻浣跨敤POST鏂硶
- 鍘缉锟?/strong>鍦ㄦ煇浜涘満鏅笅鍙互鍘缉URL鍙傛
鍏�乁RL缂栫爜涓庡叾浠栫佺殑鍖哄
1. URL缂栫 vs Base64缂栫
- URL缂栫爜锟?/strong>ㄤ簬缂栫爜URL涓殑鐗规畩瀛锛屼富瑕拡枃鏈暟锟?/li>
- Base64缂栫爜锟?/strong>ㄤ簬灏嗕簩杩涘埗鏁版嵁杞崲涓哄彲鎵撳嵃瀛锛屼笉涓撻棬ㄤ簬URL
2. URL缂栫 vs HTML缂栫
- URL缂栫爜锟?/strong>ㄤ簬URL涓殑缂栫
- HTML缂栫爜锟?/strong>ㄤ簬HTML鍐呭涓殑瀛缂栫爜锛岄槻姝SS诲嚮
3. 缂栫爜灞傜骇
鍦╓eb�鍙戜腑锛屼笉鍚屽眰娆$殑缂爜闇�瑕佹敞鎰忥
- JavaScript灞傦浣跨encodeURIComponent缂栫爜URL鍙傛
- HTTP浼犺灞傦URL宸茬粡浠TTP鍗忚瑙畾的牸忎紶锟�?/li>
- 鏈嶅姟鍣ㄧ锟�?/strong>鏈嶅姟鍣ㄦ牴鎹厤缃殑瀛闆嗚В乁RL
- 鏁版嵁搴撳眰锟�?/strong>鏁版嵁浠ョ氬瓧绗﹂泦瀛樺
涔濄�佺粨锟?/h2>
URL缂栫爜鏄疻eb�鍙戜腑鏈�鍩虹浣嗕篃鏈�瀹琚拷瑙嗙殑鎶�鏈涓�銆傞�氳繃鏈枃的涔狅紝浣犲簲璇ュ凡缁忔帉鎻′簡URL缂栫爜的伐浣滃師鐞嗐�佺佽鍒欍�佸父瑙棶棰樹互鍙婃渶浣冲疄璺拷?/p>
鍦ㄥ疄闄紑鍙戜腑锛屾纭娇鐢║RL缂栫爜鍙互厤堝妫樻的棶棰橈紝濡備贡鐮侊拷?04閿欒銆佸畨鍏ㄦ紡娲炵瓑銆傝浣忎互涓叧閿偣锟�?/p>
- 鏍嵁浣跨敤鍦烘櫙夋encodeURI鎴杄ncodeURIComponent
- 粓浣跨敤UTF-8瀛锟�?/li>
- 涓嶈瑰凡缂爜的瓧绗︿鍐嶆缂栫
- 娉ㄦ剰淇濈暀瀛的勫锟?/li>
- 鍋氬ソ杈撳叆楠岃瘉鍜屽畨鍏ㄩ槻锟?/li>
屾湜鏈枃鑳藉姪浣犳洿濂藉湴鐞嗚В鍜屽簲鐢║RL缂栫爜鎶�鏈紝鍦ㄥ紑鍙戜腑鏇村姞績搴墜銆傚鏋滀綘闇�瑕佸揩熻繘琛RL缂栬В佹搷浣滐紝鍙互浣跨敤鎴戜滑的勫绾垮伐鍏凤紝瀹冩鎸佸绉嶇紪佹牸忥紝绠�鍗曟槗鐢拷?/p>
🦘憠 绔嵆浣跨敤锟�?/strong>URL 缂栬В锟�?/a>