2012-10-28 37 views
7

Tôi đã tìm thấy các bài đăng khác nhau khi thoát trong Java được thực hiện với java.net.URLEncoder.encode. Tuy nhiên tôi đã tìm thấy trong docs for URL rằng:Làm thế nào tôi có thể thoát URL trong Java (tài liệu không rõ ràng)?

Các URLEncoderURLDecoder lớp cũng có thể được sử dụng, nhưng chỉ để mã hóa dưới dạng HTML, đó là không giống như các chương trình mã hóa được định nghĩa trong RFC2396.

Ai đó có thể giải thích cho tôi về trường hợp này không?

Trả lời

4

Tài liệu chính xác khuyên sử dụng lớp URI. Lý do URLEncoder vẫn được đề cập là tôi đoán nguyên nhân lịch sử URLEncoder đã có từ 1.0 trong khi URI được thêm vào 1.4.

4

URLEncoder, mặc dù tên của nó, là để mã hóa URL đối số hoặc thông số POST.

Cách chính xác để mã hóa URL đúng, trước chuỗi truy vấn, là thông qua URI mới (null, String, null) .toURL().

7

Bạn có thể sử dụng URI. Ví dụ:

URI uri = new URI("http","google.com","/ a z.html","asd= z%#@@#"); 
System.out.println(uri.toString()); 
//returns http://google.com/%20a%20z.html#asd=%20z%25%[email protected]@%23 

lưu ý rằng các nhà xây dựng tham số duy nhất không thoát khỏi nhân vật, vì vậy nó sẽ ném một ngoại lệ nếu bạn làm điều gì đó như:

URI uri = new URI("http://google.com/ a z.html?asd= z%#@@#"); 

Từ một URI bạn có thể nhận được một địa chỉ URL bằng cách đang thực hiện:

URL uri.toURL(); 
Các vấn đề liên quan