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
ký tự có ý nghĩa đặc biệt trong URL. Trong biểu mẫu HTML, ký tự =
là
được dùng để phân tách tên khỏi một 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ố biện pháp thay thế bổ sung
thay vì áp dụng mã hoá phần trăm cho tất cả các ký tự đó.
Ví dụ: dấu cách trong chuỗi được mã hoá bằng %20
hoặc thay thế bằng
dấu cộng (+
). Nếu bạn sử dụng ký tự gạch đứng (|
) làm dấu phân cách, hãy nhớ
để mã hoá đường ống dưới dạng %7C
. Dấu phẩy trong một chuỗi phải được mã hoá là %2C
.
Bạn nên sử dụng thư viện tạo URL thông thường của nền tảng để tự động mã hoá URL để đảm bảo URL được thoát đúng cách cho chủ.
Tạo URL hợp lệ
Bạn có thể cho rằng trang web "hợp lệ" URL hiển thị rõ ràng, nhưng
không hẳn như vậy. URL được nhập trong thanh địa chỉ trong
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 chế độ mã hoá khác trước khi truyền.
Đồng thời, mọi mã tạo hoặc chấp nhận dữ liệu đầu vào UTF-8
có thể coi URL có ký tự UTF-8 là "hợp lệ", nhưng cũng phải
để dịch những ký tự đó trước khi gửi tới máy chủ web.
Quá trình này 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 cần phải tuân theo cú pháp được chỉ định bởi Đồng phục Thông số kỹ thuật Giá trị nhận dạng tài nguyên (URI). 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: ký hiệu chữ và số và một số ký tự dành riêng để sử dụng làm đối tượng kiểm soát ký tự trong URL. Bảng này tóm tắt những ký tự sau:
Đặt | ký tự | Sử dụng URL |
---|---|---|
Chữ và số | a b c d e f g h i j k l m n h o a o q u ả n g t ậ p A B C D E F G H I J K L M 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 giao thứ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 các ký tự đã hiển thị trong bảng. Tạo một URL để sử dụng bộ ký tự này thường dẫn đến hai vấn đề, một là không có và một là bị thay thế:
- Các ký tự bạn muốn xử lý tồn tại bên ngoài
đã chọn. Ví dụ: ký tự bằng tiếng nước ngoài
như
上海+中國
cần được mã hoá bằng ký tự phía trên. Theo quy ước phổ biến, không gian (là không được phép trong URL) thường được biểu thị bằng dấu cộng'+'
ký tự. - 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 theo đúng nghĩa đen.
Ví dụ:
?
được sử dụng trong các URL để cho biết đầu chuỗi truy vấn; nếu bạn muốn sử dụng chuỗi "? và Bí ẩn," bạn sẽ cần mã hoá'?'
ký tự.
Tất cả các ký tự được mã hoá URL đều được mã hoá
sử dụng ký tự '%'
và hệ thập lục phân gồm hai 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
. Chiến lược phát hành đĩa đơn
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 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ị được mã hoá |
---|---|
Không gian | %20 |
" | %22 |
< | %3C |
> | %3E |
# | %23 |
% | %25 |
| | %7C |
Đôi khi, 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 phức tạp. Ví dụ: người dùng có thể nhập địa chỉ là "5th&Main St." Thông thường, bạn nên xây dựng URL từ các phần của URL đó, xem xét bất kỳ hoạt động đầu vào nào của người dùng dưới dạng ký tự cố định.
Ngoài ra, URL chỉ được dài tối đa 16384 ký tự đối với tất cả các dịch vụ web trên Nền tảng Google Maps và API web tĩnh. Đối với hầu hết các dịch vụ, hiếm khi đạt đến giới hạn ký tự này. Tuy nhiên, Xin lưu ý rằng một số dịch vụ nhất định có một số tham số có thể dẫn đến URL dài.