Theo W3C (và họ là những nguồn chính thức về những điều này), một nhân vật không gian trong chuỗi truy vấn (và chỉ trong chuỗi truy vấn) có thể được mã hóa thành "%20
" hoặc "+
". Từ phần "Chuỗi truy vấn" trong "Đề xuất":
Trong chuỗi truy vấn, ký hiệu dấu cộng được đặt làm ký hiệu viết tắt cho dấu cách. Do đó, dấu cộng thực phải được mã hóa. Phương pháp này được sử dụng để làm cho các URI truy vấn dễ dàng hơn trong các hệ thống không cho phép các khoảng trống.
Theo mục 3.4 của RFC2396 đó là đặc điểm kỹ thuật chính thức về URI nói chung, "truy vấn" thành phần là URL phụ thuộc vào:
3,4. Thành phần truy vấn Thành phần truy vấn là một chuỗi thông tin được diễn giải bởi tài nguyên.
query = *uric
Trong thành phần truy vấn, các ký tự ";", "/", "?" ":", "@", "&", "=", "+", "" và "$" được đặt trước.
Do đó, lỗi trong phần mềm khác nếu nó không chấp nhận các URL có dấu cách trong chuỗi truy vấn được mã hóa là ký tự "+
".
Đối với phần thứ ba của câu hỏi, một cách (mặc dù hơi xấu xí) để sửa đầu ra từ URLEncoder.encode()
là sau đó callreplaceAll("\\+","%20")
trên giá trị trả lại.
Nguồn
2009-07-31 08:09:42
vì lợi ích của các nhà phát triển .net: HttpUtility.UrlPathEncode sử dụng '% 20 'HttpUtility.UrlEncode sử dụng' +. ' nguồn: http://msdn.microsoft.com/en-us/library/system.web.httputility.urlpathencode(v=vs.110).aspx – CodeToad
@MetaByter Tôi nghĩ rằng đó là kỹ thuật chính xác hơn để cụm từ câu hỏi là " Trong URL, tôi có nên mã hóa khoảng trắng bằng cách sử dụng% 20 hoặc + * trong phần truy vấn của URL * không? " bởi vì trong khi ví dụ bạn hiển thị chỉ bao gồm dấu cách trong phần truy vấn, thì có thể không rõ ràng đối với tất cả người đọc rằng câu trả lời phụ thuộc. Ngoài ra, bạn có thể đặt câu hỏi, "Trong * các ví dụ URL cụ thể bên dưới *, tôi có nên mã hóa ..." – Matt