2017-10-20 61 views
5
require 'uri' 
uri = URI.parse 'http://dxczjjuegupb.cloudfront.net/wp-content/uploads/2017/10/Оуэн-Мэтьюс.jpg' 

的瀏覽器在使用http://dxczjjuegupb.cloudfront.net/wp-content/uploads/2017/10/Оуэн-Мэтьюс.jpg所以我問自己,如果這個Ruby類是一點點過時沒有問題,我應該徹底放棄,或做一些?錯誤處理...紅寶石:URI :: InvalidURIError(URI必須是ASCII只

+2

僅僅因爲你的瀏覽器隱含URL編碼URL並不意味着紅寶石會做同樣的在Ruby中,你不得不這樣做。明確地對URL進行編碼 – spickermann

回答

5

只是問自己的問題來找我的答案是:

begin 
    uri = URI.parse(url) 
rescue URI::InvalidURIError 
    uri = URI.parse(URI.escape(url)) 
end 
+4

'uri = URI.parse(URI.escape(ur l))'是一個更好的答案。 「救援」區塊絕對是多餘的。 – mudasobwa

+1

@mudasobwa小心避開所有的東西:'uri = URI.parse(URI.escape('http://example.com/not%20cool'))'yield'「http://example.com/not% 2520cool「' – tadman

+0

@tadman它取決於'url'的構建內容。我最好有'折扣= 5%''正確編碼:) – mudasobwa

相關問題