Hi có phương pháp ruby tương đương với phương thức JavaScript encodeURIComponent
không? tôi đang sử dụng số URI.unescape(str)
nhưng nó nhận ra số "£"
(sau encodeURIComponent
nó trở thành "%C2%A3"
) dưới dạng dấu hiệu "?"
. giải pháp nào? nhờRuby tương đương với mã hóa JavaScript của mã JavaScript mà tạo ra kết quả giống hệt nhau?
18
A
Trả lời
27
URI.escape(foo, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
tìm thấy ở đây: How do I raw URL encode/decode in JavaScript and Ruby to get the same values in both?
-1
+1
cho phép nói rằng tôi có str = "£" i sử dụng encodeURIComponent (str) trong javascript, nhưng khi tôi sử dụng URI.unescape (str) trong ruby và chuỗi đó trở lại dưới dạng str = "?". vì vậy có sự khác biệt. –
6
CGI.escape
nên thoát một cách chính xác, ngoại trừ việc không gian được thoát như +
.
Lưu ý rằng URI.escape
đã bị phản đối trong Ruby 1.9.2 ...
Có một cuộc thảo luận dài on ruby-core cho những người quan tâm.
6
Tôi nghĩ cách đơn giản nhất là URI.encode_www_form_component
.
cho phép nói rằng tôi có một str = "£" tôi sử dụng encodeURIComponent (str) trong javascript, nhưng khi tôi sử dụng URI.unescape (str) trong ruby và chuỗi đó trở lại như là một str = "?". vì vậy có sự khác biệt –