Một số ký tự không thể nằm trong URL (ví dụ: dấu cách) và một số ký tự khác có ý nghĩa đặc biệt trong URL. Trong biểu mẫu HTML, ký tự = được dùng để phân tách tên khỏi giá trị. Cú pháp chung của URI sử dụng phương thức mã hoá URL để giải quyết vấn đề này, trong khi biểu mẫu HTML thực hiện một số thay thế bổ sung thay vì áp dụng phương thức mã hoá phần trăm cho tất cả các ký tự như vậy.
Ví dụ: dấu cách trong một chuỗi được mã hoá bằng %20 hoặc được thay thế bằng dấu cộng (+). Nếu bạn sử dụng ký tự gạch thẳng (|) làm dấu phân tách, hãy nhớ mã hoá dấu gạch thẳng thành %7C. Dấu phẩy trong một chuỗi phải được mã hoá thành %2C.
Bạn nên sử dụng các thư viện tạo URL thông thường của nền tảng để tự động mã hoá URL, nhằm đảm bảo các URL được thoát đúng cách cho nền tảng của bạn.
Tạo URL hợp lệ
Bạn có thể nghĩ rằng một URL "hợp lệ" là điều hiển nhiên, nhưng không phải như vậy. Ví dụ: một URL được nhập trong thanh địa chỉ của trình duyệt có thể chứa các ký tự đặc biệt (ví dụ: "上海+中國"); trình duyệt cần dịch nội bộ các ký tự đó thành một phương thức mã hoá khác trước khi truyền.
Tương tự, mọi mã tạo hoặc chấp nhận dữ liệu đầu vào UTF-8 đều có thể coi các URL có ký tự UTF-8 là "hợp lệ", nhưng cũng cần dịch các ký tự đó trước khi gửi đến máy chủ web.
Quá trình này được gọi là
mã hoá URL hoặc mã hoá phần trăm.
Các ký tự đặc biệt
Chúng ta cần dịch các ký tự đặc biệt vì tất cả URL đều phải tuân thủ cú pháp do thông số kỹ thuật của Mã định danh tài nguyên đồng nhất (URI) chỉ định. Trên thực tế, điều này có nghĩa là URL chỉ được chứa một tập hợp con đặc biệt gồm các ký tự ASCII: các ký hiệu chữ và số quen thuộc và một số ký tự dành riêng để sử dụng làm ký tự điều khiển trong URL. Bảng này tóm tắt các ký tự này:
| Đặt | ký tự | Cách sử dụng URL |
|---|---|---|
| Chữ và số | a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 | Chuỗi văn bản, cách sử dụng lược đồ (http), cổng (8080), v.v. |
| Không dành riêng | - _ . ~ | Chuỗi văn bản |
| Đã đặt trước | ! * ' ( ) ; : @ & = + $ , / ? % # [ ] | Ký tự điều khiển và/hoặc Chuỗi văn bản |
Khi tạo một URL hợp lệ, bạn phải đảm bảo rằng URL đó chỉ chứa những ký tự được hiển thị trong bảng. Việc điều chỉnh URL để sử dụng tập hợp ký tự này thường dẫn đến 2 vấn đề, một vấn đề về việc bỏ qua và một vấn đề về việc thay thế:
- Các ký tự mà bạn muốn xử lý nằm ngoài tập hợp nêu trên. Ví dụ: các ký tự trong ngôn ngữ nước ngoài
chẳng hạn như
上海+中國cần được mã hoá bằng các ký tự nêu trên. Theo quy ước phổ biến, dấu cách (không được phép trong URL) cũng thường được biểu thị bằng ký tự dấu cộng'+'cũng như. - Các ký tự tồn tại trong tập hợp nêu trên dưới dạng ký tự dành riêng,
nhưng cần được sử dụng theo đúng nghĩa đen.
Ví dụ:
?được dùng trong URL để cho biết phần đầu của chuỗi truy vấn; nếu bạn muốn sử dụng chuỗi "? and the Mysterions," bạn cần mã hoá ký tự'?'.
Tất cả các ký tự cần được mã hoá URL đều được mã hoá bằng ký tự '%' và giá trị thập lục phân gồm 2 ký tự tương ứng với ký tự UTF-8 của chúng. Ví dụ: 上海+中國 trong UTF-8 sẽ được mã hoá URL thành %E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B. Chuỗi ? and the Mysterians sẽ được mã hoá URL thành %3F+and+the+Mysterians hoặc %3F%20and%20the%20Mysterians.
Các ký tự phổ biến cần được mã hoá
Một số ký tự phổ biến phải được mã hoá là:
| Ký tự không an toàn | Giá trị đã mã hoá |
|---|---|
| Không gian | %20 |
| " | %22 |
| < | %3C |
| > | %3E |
| # | %23 |
| % | %25 |
| | | %7C |
Việc chuyển đổi URL mà bạn nhận được từ hoạt động đầu vào của người dùng đôi khi rất khó. Ví dụ: người dùng có thể nhập địa chỉ là "5th&Main St." Thông thường, bạn nên tạo URL từ các phần của URL đó, coi mọi hoạt động đầu vào của người dùng là ký tự theo đúng nghĩa đen.
Ngoài ra, URL bị giới hạn ở 16384 ký tự cho tất cả các dịch vụ web và API web tĩnh của Nền tảng Google Maps. Đối với hầu hết các dịch vụ, giới hạn ký tự này hiếm khi được tiếp cận. Tuy nhiên, hãy lưu ý rằng một số dịch vụ có nhiều tham số có thể dẫn đến URL dài.