2012-09-16 28 views
10

के साथ फ़ाइल एन्कोडिंग प्राप्त/सेट करें मैं निम्नलिखित समस्या से जूझ रहा हूं। जावास्क्रिप्ट का उपयोग करके मैं एक फ़ाइल सामग्री के चरित्र सेट को बदलना चाहता हूं और इस सामग्री को उपयोगकर्ता को प्रदर्शित करना चाहता हूं।जावास्क्रिप्ट के फ़ाइल रीडर

मेरे पास एक इनपुट है: फ़ाइल फॉर्म। परिवर्तन पर मैं सामग्री पढ़ रहा हूं

$('#form input:file').change(function(event){     
    file = this.files[0]; 
    reader = new FileReader(); 
    reader.onload = function(event) { 
     result = event.target.result.replace(/\n/g,'<br />'); 
     $('#filecontents').html(result); 
    }); 
    reader.readAsText(file); 
}) 

फ़ाइल Windows-1251 में है। मैं फ़ाइल की सामग्री को दूसरे एन्कोडिंग में कनवर्ट करना चाहता हूं और उसके बाद इसे उपयोगकर्ता को प्रस्तुत करना चाहता हूं।

क्या जावास्क्रिप्ट के साथ यह संभव है?

सादर

उत्तर

21

अपने HTML पृष्ठ UTF-8 में है और अपनी फ़ाइल ISO-8859-1 में है।

यह काम कर रहा है:

reader.readAsText(file, 'ISO-8859-1'); 

मैं किसी भी Windows-1251 फ़ाइल तो मैं यह परीक्षण करने के लिए सक्षम नहीं था नहीं है, लेकिन जैसे कि 'CP1251' कम से कम गूगल क्रोम के द्वारा समर्थित है (यह लग रहा है), इसलिए:

reader.readAsText(file, 'CP1251'); 

इस में से कोई भी काम कर रहा है। फिर आपको प्रारूपण को मैन्युअल रूप से बदलना चाहिए। दुर्भाग्यवश, मुझे किसी भी जावास्क्रिप्ट लाइब्रेरी से अवगत नहीं है जो चाल करता है।

यूनिकोड मानचित्रण here से

और Delan Azabanianswer से, आप एक समारोह है कि UTF-8 में CP1251 में अपने स्ट्रिंग चार से चार परिवर्तित निर्माण करने के लिए प्रबंधन करना चाहिए।

+0

आपकी आखिरी वाक्य के बारे में, क्या आईएसओ -885 9 -1 स्ट्रिंग को यूटीएफ -8 में परिवर्तित करने के लिए "मानक" फ़ंक्शन नहीं है? –

+0

मैंने इसे Shift-JIS फ़ाइल के साथ निम्नानुसार करने की कोशिश की: reader.readAsText (f, "Shift-JIS"); जो यूटीएफ -8 में परिवर्तित हुआ ठीक है। लेकिन अब समस्या यह पता लगाने के लिए है कि इनकमिंग फ़ाइल को Shift-JIS में एन्कोड किया गया है ... क्योंकि यदि मैं उस फ़ंक्शन में यूटीएफ -8 एन्कोडेड फ़ाइल भेजने की कोशिश करता हूं तो यह ठीक से परिवर्तित नहीं होता है। – starmandeluxe