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.
Đã hoàn thành trong trình duyệt này
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.
Encode Keyboard xử lý như thế nào
Đổ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.
Giữ nguyên ký tự unreserved
Chỉ ALPHA, DIGIT, -, ., _ và ~ được giữ literal.
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.
Ví dụ từng bước
Xin chàoXin%20ch%C3%A0oSpace là %20; à là hai byte UTF-8 C3 A0 nên thành %C3%A0.
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
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
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.