2012-01-03 31 views
10

Có nhiều cuộc thảo luận về thoát URL trong Ruby, nhưng tiếc là tôi không tìm thấy giải pháp thích hợp.url thoát trong ruby ​​

Nói chung, URI.escape nên thực hiện công việc, nhưng có vẻ như nó không hỗ trợ tất cả các ký tự, ví dụ: nó không thoát "[".

URI.parse(URI.escape("1111{3333")) 

hoạt động tốt.

URI.parse(URI.escape("1111[3333")) 

tăng ngoại lệ.

Tôi hiểu rằng "[" không phải là một ký tự đủ điều kiện trong URL theo RFC, nhưng khi tôi nhập nó vào trình duyệt, nó sẽ lấy nó và hiển thị trang, vì vậy tôi cần chính xác hành vi tương tự.

Bạn có biết giải pháp sẵn sàng để thoát trong Ruby không?

Trả lời

16

Tôi thường sử dụng

CGI.escape 

để thoát khỏi các tham số URI.

require 'cgi'. 

CGI.escape('1111[3333') 
=> "1111%5B3333" 
+0

Cảm ơn, có vẻ như mọi thứ tôi cần – com

+1

điều lạ là CGI.escape ('1111 3333') = "1111 + 3333", nên là "1111% 203333", nhưng thực sự liên kết các công trình cũng với "+" – com

Các vấn đề liên quan