+
dấu có ý nghĩa ngữ nghĩa trong chuỗi truy vấn. Nó được sử dụng để đại diện cho một không gian. Một ký tự khác có tầm quan trọng ngữ nghĩa trong chuỗi truy vấn là &
được sử dụng để tách các cặp var=value
khác nhau trong chuỗi truy vấn.
Hầu hết các tập lệnh phía máy chủ sẽ giải mã các tham số truy vấn trước khi sử dụng chúng, sao cho +
được chuyển đổi đúng cách thành không gian. Bây giờ, nếu bạn muốn có một số +
bằng chữ để có mặt trong chuỗi truy vấn, bạn cần chỉ định %2B
thay thế.
+
đăng nhập vào chuỗi truy vấn được giải mã URL thành không gian. %2B
trong chuỗi truy vấn được giải mã URL thành dấu +.
Xem sự khác biệt giữa
http://www.google.com/search?q=foo+bar
và
http://www.google.com/search?q=foo%2Bbar
Trong ví dụ trên, kịch bản máy chủ của Google là URL-giải mã các thông số truy vấn và sau đó sử dụng chúng để thực hiện tìm kiếm .
Mã hóa URL không là gì ngoài dấu hiệu %
theo sau là mã hex của ký tự đặc biệt. Ví dụ: chúng tôi biết rằng mã hex của A
là 0x41 (thập phân: 65). Hãy thử điều này:
http://www.google.com/search?q=%41
Hy vọng điều này làm cho URL mã hóa rõ ràng. Vì vậy, nếu bạn muốn dấu hiệu +
được giữ nguyên khi JavaScript đang tìm nạp URL có các thông số truy vấn của nó và mã phía máy chủ sẽ xử lý thông số truy vấn sau khi giải mã URL, bạn nên mã hóa URL các tham số truy vấn trong URL trước khi sử dụng phát hành yêu cầu nhận HTTP để tất cả các dấu hiệu +
được chuyển đổi thành %2B
khi yêu cầu đạt đến tập lệnh phía máy chủ.Bây giờ khi tập lệnh phía máy chủ URL giải mã chuỗi truy vấn, tất cả %2B
sẽ được chuyển đổi trở lại thành +
các dấu hiệu mà bạn muốn.
Xem Encode URL in JavaScript? để tìm hiểu cách mã hóa URL thông số bằng JavaScript. trả lời ngắn gọn từ các cuộc thảo luận ở đó:
var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);
Nguồn
2011-07-28 07:56:51
bạn có mã không? – tutts
thực sự giá trị phụ thuộc vào đầu vào của người dùng. – domlao
FYI hãy cẩn thận với 'UrlBuilder', có vẻ như một chút vô ích, đó là cách tôi vấp phải câu hỏi của bạn. Xem http://stackoverflow.com/questions/24576239/why-doesnt-uribuilder-query-escaping-url-encoding-the-query-string – KCD