2012-05-30 74 views
4

我知道這是一個常見的錯誤,我用一個已知的解決方案,但它仍然給了我同樣的錯誤:紅寶石URI :: InvalidURIError:壞URI(是不是URI?)除了編碼

require 'open-uri' 
url = "http://website.com/dirs/filex[a]" 

safeurl = URI.parse(URI.encode(url)) 
... 

給了URI::InvalidURIError: bad URI(is not URI?):

我知道它的[]字符造成這種情況。但URI.encode沒有做任何事情

我在做什麼錯?

回答

14

我想你的意思是需要URL,而不是打開-URI。另外,您還可以指定第二個參數,並使用額外的字符進行編碼。嘗試在那裏通過[]

此解決方案的代碼將是:

safeurl = URI.parse(URI.encode(url, "[]")) 
+0

需要'uri'沒有什麼不同,但通過[]修復它 – Akshat

1

我在這裏有同樣的問題。我用這個形式給出瞭解決這個:

require 'cgi' 
url = "http://website.com/dirs/filex[a]" 

safeurl = URI.parse(CGI.escape(url).gsub("%3A", ":").gsub("%2F", "/")) 

,而不是要求URI,我使用CGI類逃脫無效字符,但CGI逃脫一切,包括冒號和斜槓,所以以後我使用gsub讓他們回來。

相關問題