Bài học codec · URL Percent

URL Percent: encode octet UTF-8 cho một thành phần URI

Percent encoding trong RFC 3986 viết một octet bằng % và hai chữ số hexadecimal. Encode Keyboard chỉ để ký tự URI unreserved ở dạng thường, mọi byte khác đều được encode.

Chuẩn · RFC 3986 Khả năng khôi phục: Chính xác với profile RFC 3986 canonical của Encode Keyboard và UTF-8 hợp lệ.
Mục tiêu bài học

Nhận diện nhóm ký tự unreserved RFC 3986, encode byte UTF-8 bằng %HH chữ hoa và tránh nhầm quy tắc dấu + của form.

Chữ, số, -, ., _ và ~ giữ nguyên. Mọi byte UTF-8 khác thành một triplet %HH viết hoa. Vì vậy space thành %20, không phải + trong profile này.

01

Encode Keyboard xử lý như thế nào

1

Đổi text thành octet UTF-8

Ký tự ngoài ASCII có thể tạo nhiều byte và do đó nhiều triplet %HH.

2

Giữ nguyên ký tự unreserved

Chỉ ALPHA, DIGIT, -, ., _ và ~ được giữ literal.

3

Kiểm tra ý nghĩa canonical

Decode nhận hex hoa hoặc thường trong triplet đầy đủ, chuẩn hóa thành chữ hoa rồi từ chối ký tự reserved để thô hoặc byte UTF-8 sai.

02

Ví dụ từng bước

Đầu vàoXin chào
Kết quảXin%20ch%C3%A0o

Space là %20; à là hai byte UTF-8 C3 A0 nên thành %C3%A0.

03

Nên dùng khi

  • Học cách biểu diễn byte trong thành phần URI
  • Đọc text UTF-8 đã percent encode
  • Chuẩn bị text không nhạy cảm cho ngữ cảnh URI component đã biết
04

Kiểm tra hợp lệ và lỗi thường gặp

  • Encoder viết %HH chữ hoa; decoder cũng nhận hex chữ thường trong triplet đầy đủ
  • Encode dấu % thành %25 và space thành %20
  • Không dùng + thay cho space trong profile RFC 3986 này
05

Thực hành trong trình duyệt

Công cụ dùng đúng quy tắc đã mô tả của app và chỉ chạy trong tab này.

URL PercentCông cụ dùng đúng quy tắc đã mô tả của app và chỉ chạy trong tab này.
Kết quả

Công cụ dùng đúng quy tắc đã mô tả của app và chỉ chạy trong tab này.

06

Kiểm tra nhanh

Profile RFC 3986 này encode space như thế nào?