2017-10-20 34 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 इसलिए मैं अपने आप को पूछ रहा हूँ अगर यह गहरे लाल रंग का वर्ग एक छोटा सा पुरानी हो चुकी है के साथ कोई समस्या नहीं है होना चाहिए और मैं पूरी तरह से इसे त्याग या कुछ करना चाहिए? त्रुटि हैंडलिंग ...रूबी: यूआरआई :: InvalidURIError (यूआरआइ ascii केवल

+2

सिर्फ इसलिए कि आपके ब्राउज़र परोक्ष यूआरएल encodes कि यूआरएल मतलब यह नहीं है कि रूबी भी ऐसा ही होगा रूबी में आप के लिए है। स्पष्ट रूप से यूआरएल को एन्कोड करें। – spickermann

उत्तर

5

जवाब सिर्फ अपने आप को सवाल पूछने से मेरे पास आया:

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

'uri = URI.parse (URI.escape (ur एल)) 'एक बेहतर जवाब है। 'बचाव' ब्लॉक बिल्कुल अनावश्यक है। – mudasobwa

+1

@mudasobwa सभी चीजों से बचने के लिए सावधान: 'uri = URI.parse (URI.escape ('http://example.com/not%20cool')) 'उपज'' http://example.com/not% 2520cool "' – tadman

+0

@tadman यह निर्भर करता है कि 'url' किस प्रकार से बनाया गया है। मैं बेहतर 'छूट = 5%' ठीक से एन्कोड किया होगा :) – mudasobwa

संबंधित मुद्दे