About URL Encoding
Mã hóa URL, còn được gọi là mã hóa phần trăm, là một cơ chế để mã hóa thông tin trong Uniform Resource Identifier (URI). Nó được sử dụng để chuyển đổi các ký tự không được phép trong URL thành định dạng có thể truyền qua Internet. Mã hóa này thay thế các ký tự ASCII không an toàn bằng "%" theo sau bởi hai chữ số thập lục phân.
Các Ứng dụng Thông dụng của Mã hóa URL
- Định dạng chuỗi truy vấn trong URL
- Gửi dữ liệu biểu mẫu qua các yêu cầu HTTP (application/x-www-form-urlencoded)
- Tạo URL hợp lệ với các ký tự đặc biệt hoặc khoảng trắng
- Mã hóa các ký tự không phải ASCII trong URL
- Truyền các tham số phức tạp trong API và dịch vụ web
Cách Mã hóa URL Hoạt động
Mã hóa URL tuân theo các nguyên tắc sau:
- Các ký tự chữ số và chữ cái (A-Z, a-z, 0-9) giữ nguyên
- Các ký tự đặc biệt như khoảng trắng, ?, &, =, %, + được chuyển đổi thành dạng mã hóa phần trăm tương ứng
- Mỗi byte của một ký tự mã hóa UTF-8 được mã hóa phần trăm riêng biệt
- Ký tự khoảng trắng có thể được mã hóa thành "%20" hoặc "+" (trong tham số truy vấn)
- Các ký tự dành riêng như /, :, ?, #, [ có ý nghĩa đặc biệt trong URL và có thể được xử lý khác nhau tùy theo ngữ cảnh
encodeURI so với encodeURIComponent
JavaScript cung cấp hai hàm để mã hóa URL:
- encodeURI: Mã hóa một URI hoàn chỉnh, giữ nguyên các ký tự là một phần của cú pháp URI (như /:?#[]@!$&'()*+,;=)
- encodeURIComponent: Mã hóa một thành phần URI (như giá trị tham số truy vấn), mã hóa nhiều ký tự hơn bao gồm cả những ký tự có ý nghĩa đặc biệt trong URI
Trong hầu hết các trường hợp khi mã hóa dữ liệu người dùng hoặc tham số truy vấn, encodeURIComponent()
là lựa chọn an toàn hơn vì nó đảm bảo tất cả các ký tự có thể gây vấn đề được mã hóa đúng cách.
Mã hóa URL cho các Ký tự Quốc tế
Các trình duyệt hiện đại mã hóa các ký tự không phải ASCII bằng mã hóa UTF-8 rồi sau đó mã hóa phần trăm từng byte. Điều này đảm bảo các ký tự quốc tế, biểu tượng cảm xúc và các ký hiệu Unicode khác có thể được bao gồm đúng trong URL. Ví dụ, ký tự tiếng Nhật "日" được mã hóa UTF-8 thành ba byte (E6 97 A5) rồi được mã hóa phần trăm thành "%E6%97%A5".
Examples
Văn bản Thường | Đã Mã hóa URL |
---|---|
Hello World | Hello%20World |
https://example.com/?q=search term | https%3A%2F%2Fexample.com%2F%3Fq%3Dsearch%20term |
Giảm giá 50%! | 50%25%20off%20sale%21 |
Smith & Jones LLC | Smith%20%26%20Jones%20LLC |