點擊上方的語言選單以切換語言

RFC 3986 URL 編碼規範完整說明

RFC 3986 是由 IETF(Internet Engineering Task Force)制定的標準,正式名稱為 Uniform Resource Identifier (URI): Generic Syntax
本文件定義了 URL / URI 的通用語法結構與字元編碼方式(Percent-Encoding)。


一、URI 基本結構

scheme://authority/path?query#fragment

範例:

https://example.com/products/list?id=100#top
部分說明
scheme協定(http, https, ftp...)
authority網域名稱或 IP
path資源路徑
query查詢參數
fragment頁面錨點

二、字元分類

1. Unreserved Characters(不需編碼)

A–Z
a–z
0–9
- _ . ~

這些字元可以直接使用,不需要進行編碼。

2. Reserved Characters(保留字元)

: / ? # [ ] @
! $ & ' ( ) * + , ; =

這些字元在 URL 中有特殊用途,若作為資料使用,必須進行編碼。


三、Percent-Encoding(百分比編碼)

編碼格式:

%HH

HH 為字元的十六進位表示(ASCII 或 UTF-8 byte)。

字元ASCII編碼
空白0x20%20
?0x3F%3F
#0x23%23

四、非 ASCII 字元(UTF-8 編碼規則)

所有非 ASCII 字元必須:

  1. 轉為 UTF-8
  2. 逐 byte 轉為 %HH

例如:「中文」

UTF-8:
E4 B8 AD E6 96 87

Percent-Encoding:
%E4%B8%AD%E6%96%87

五、實際範例(德文句子)

原始字串:
eristeinfleißigerSchülerwährenddueinegroßeLehrerinbistalsokönntihrFreundesein

此字串包含:

這些都不是 ASCII 字元,因此必須進行 UTF-8 + Percent-Encoding。

eristeinflei%C3%9FigerSch%C3%BClerw%C3%A4hrenddueinegro%C3%9FeLehrerinbistalsok%C3%B6nntihrFreundesein

編碼後才符合 RFC 3986 規範。


六、空白是 %20 還是 + ?

情境表示方式
RFC 3986 標準 URI%20
application/x-www-form-urlencoded(HTML 表單)+
注意:
RFC 3986 僅定義 %20。
「+」是 HTML 表單提交格式,不屬於 RFC 3986 本身規範。

七、RFC 3986 的用途

若未遵守 RFC 3986,可能導致:


八、總結


本文件依 RFC 3986 標準整理說明

分享到 Facebook | 分享到 Line | 分享到 X
作者:周彥廷
創作日期:西元二零二六年二月十九日
自拍