2012-07-26 6 views
23

रूबी 1.9.एक्स में, हम File.open('filename','r:iso-8859-1') के साथ एन्कोडिंग निर्दिष्ट कर सकते हैं। मैं अक्सर एक लाइन फ़ाइल.read() का उपयोग करना पसंद करता हूं अगर मैं स्ट्रिंग में कई छोटी फाइलें पढ़ रहा हूं। क्या कोई तरीका है कि मैं सीधे एन्कोडिंग निर्दिष्ट कर सकता हूं, या क्या मुझे निम्न में से किसी एक का सहारा लेना है?क्या रूबी निर्दिष्ट एन्कोडिंग के साथ File.read() करने का एक तरीका प्रदान करता है?

str = File.read('filename') 
str.force_encoding('iso-8859-1') 

या

f = File.open('filename', 'r:iso-8859-1') 
s = '' 
while (line = f.gets) 
    s += line 
end 
f.close 

उत्तर

41
fine manual से

:

पढ़ने (नाम, [लंबाई [,] ऑफसेट], open_args) स्ट्रिंग

→ फ़ाइल खोलता है , वैकल्पिक रूप से दिए गए offset की तलाश करता है, फिरदेता हैबाइट्स (फाइल के बाकी हिस्सों में डिफॉल्ट)। read यह सुनिश्चित करता है कि फ़ाइल लौटने से पहले बंद हो।

यदि अंतिम तर्क हैश है, तो यह आंतरिक खुले() के लिए विकल्प निर्दिष्ट करता है।

इस तरह तो आप कह सकते हैं बातें:

>> s = File.read('pancakes', :encoding => 'iso-8859-1') 
>> s.encoding 
=> #<Encoding:ISO-8859-1> 
संबंधित मुद्दे

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