मैं इसे डाउनलोड करने और डाउनलोड करने के लिए फ़ाइल के यूआरएल निकालने के लिए रूबी का उपयोग कर रहा हूं। फ़ाइल नाम में utf8 अक्षर हैं, पूर्व:मैं एएससीआईआईआई अक्षरों के यूआरएल एन्कोडिंग कैसे करूं?
www.domain.com/.../ÖÇÄÜ360ÓïÒôÖúÀí.txt
उपर्युक्त यूआरएल डाउनलोड करने का प्रयास करते समय, यह विफल हो जाता है। URI::escape
का उपयोग करते हुए एक URI पैदा करता है कि यह भी काम नहीं करता:
www.domain.com/.../%C3%96%C3%87%C3%84%C3%9C360%C3%93%C3%AF%C3%92%C3%B4%C3%96%C3%BA%C3%80%C3%AD.txt
लेकिन अगर मैं URL Encoding Reference का पालन करें, यह काम करता है:
www.domain.com/.../%D6%C7%C4%DC360%D3%EF%D2%F4%D6%FA%C0%ED.txt
मैं रूबी में एक समारोह है कि ठीक उसी करता है के लिए खोज करने की कोशिश की एन्कोडिंग, लेकिन मुझे कोई नहीं मिला। इससे पहले कि मैं उपरोक्त लिंक में तालिका लागू करने वाला एक फ़ंक्शन लिखने का प्रयास करता हूं, मैं पूछना चाहता हूं कि कोई भी मौजूदा पुस्तकालय जानता है जो ऐसा करता है। और अगर मैं ऐसा करने का फैसला करता हूं, तो मुझे किस प्रकार के पात्रों को एन्कोड करना चाहिए, जाहिर है, सबकुछ नहीं।
मैं JRuby 1.6.2 का उपयोग कर रहा RUBY_VERSION साथ => "1.8.7"
बाइट्स सी 3 9 6 एक यूटीएफ -8-एन्कोडेड ओ है। एएससीआईआई में एक ही बाइट डी 6 के रूप में एक ही चरित्र का प्रतिनिधित्व किया जाता है। इसलिए समस्या का समाधान करने का एक तरीका है अपने यूटीएफ -8 अक्षरों को ASCII में परिवर्तित करना, जहां आप कर सकते हैं, और फिर यूआरआई :: बचें। लेकिन यह यूनिकोड वर्णों के लिए आपकी सहायता नहीं करेगा जिनके पास ASCII समकक्ष नहीं है। –
क्या आपने ['CGI.escape'] (http://ruby-doc.org/stdlib-1.9.3/libdoc/cgi/rdoc/CGI.html#method-c-escape) की कोशिश की है? –
@ डेविड गोरलाइन: यह काम नहीं करता है। मैं '?' के साथ खत्म '360' और '.txt' को छोड़कर सभी पात्रों के लिए। ऊपर दिया गया उदाहरण एक वास्तविक उदाहरण है, अगर आपके पास कोई विचार है तो आप स्ट्रिंग'ÖÇÄÜ360ÓïÒôÖúÀí.txt 'पर उनका परीक्षण कर सकते हैं और मुझे यह बताएं कि यह कैसे करें। आपकी मदद के लिए बहुत बहुत धन्यवाद। – Rami