2016-05-25 8 views
3

ich zur Zeit zum Download versuchen, ich versuche, das Bild dieses Link heruntergeladen werden:URI :: InvalidURIError, während sie von URL mit eckigen Klammern

http://z.mfcdn.net/store/manga/9/14-116.0/compressed/Bleach-14-116[manga-rain]._manga_rain_bleach_ch116_01.jpg 

Dies erzeugt eine URI::InvalidURIError Ausnahme.

Nach etwa auf Stack-Überlauf zu lesen, habe ich versucht, (aber nicht):

uri = URI.parse(URI.encode(url.strip)) 

safeurl = URI.encode(url.strip) 

ich das Thema weiß etwas mit Web-Browsern ich sein mehr „freundlich“ zu tun, aber nicht wissen, wie um meine Bewerbung zu bekommen, das Gleiche zu tun.

+0

Eckige Klammern sind in einer URI nicht erlaubt, obwohl einige Leute darauf bestehen, sie dort zu platzieren. Versuchen Sie, sie durch '% 5b' und'% 5d' zu ersetzen. – tadman

Antwort

2

Hier ist eine Art Hack Weise in der URL mit den ungültigen Zeichen zu tun:

u = 'http://z.mfcdn.net/store/manga/9/14-116.0/compressed/Bleach-14-116[manga-rain]._manga_rain_bleach_ch116_01.jpg' 
fixed = u.gsub(/[\[\]]/) { '%%%s' % $&.ord.to_s(16) } 

open(fixed) 

die mit diesem Problem befassen soll.

+0

Es funktioniert, vielen Dank, aber wie und warum? –

+0

Die URL entspricht den richtigen Standards. Wie Sie gesehen haben, sind Browser extrem lax darüber, was in den Pfad- und Abfragekomponenten enthalten sein kann. – tadman

Verwandte Themen