मैं फ़ाइलों रूबी 1.9.2p290 से उनके नाम में यूनिकोड वर्ण है, कॉपी नहीं कर सकते विंडोज पर 7.रुबी में फ़ाइल नामों में यूनिकोड वर्णों वाली फ़ाइलों की प्रतिलिपि कैसे करें?
उदाहरण के लिए, मैं एक निर्देशिका में दो फ़ाइलें:
file
ハリー・ポッターと秘密の部屋
(दूसरा नाम जापानी वर्ण हैं आप इसे नहीं देख सकते हैं)
यहाँ कोड है:
> entries = Dir.entries(path) - %w{ . .. }
> entries[0]
=> "file"
> entries[1]
=> "???????????????" # <--- what?
> File.file? entries[0]
=> true
> File.file? entries[1]
=> false # <--- !!! Ruby can not see it and will not copy
> entries[1].encoding.name
=> "Windows-1251"
> Encoding.find('filesystem').name
=> "Windows-1251"
तुम मेरी रूबी फाइल सिस्टम एन्कोडिंग मैं देख एस "विंडोज़ -1251" जो 8 बिट है और जापानी को संभाल नहीं सकता है। default_external
और default_internal
एन्कोडिंग को 'utf-8' में सेट करने से मदद नहीं मिलती है।
मैं उन फ़ाइलों को रूबी से कैसे कॉपी कर सकता हूं?
अद्यतन
मैं एक समाधान मिल गया। यह काम करता है अगर मैं Dir.entries के बजाय Dir.glob
या Dir[]
का उपयोग करता हूं। फ़ाइल नाम अब यूटीएफ -8 एन्कोडिंग में लौटाए गए हैं और इसकी प्रतिलिपि बनाई जा सकती है।
अद्यतन # 2
मेरे Dir.glob
समाधान काफी सीमित हो गया लगता है। यह केवल "*" पैरामीटर के साथ काम करता है:
Dir.glob("*") # <--- Shows Unicode names correctly
Dir.glob("c:/test/*") # <--- Does not work for Unicode names
हम्म, विंडोज 7, आपके मुद्दे को पुन: उत्पन्न करने की संभावना नहीं है। इस पोस्ट पर एक नज़र डालें, शायद यह किसी भी तरह सहायक हो सकता है: http://www.ruby-forum.com/topic/1593850 –
क्या आपने अपनी कोड फ़ाइल के शीर्ष पर '# एन्कोडिंग: utf-8' जोड़ने का प्रयास किया था, या 'irb-ku' के रूप में irb चल रहा है? – Frost
हाँ, मैंने किया, लेकिन इससे मदद नहीं मिली। – Evgenii