python - "io.open" is improperly opening UTF-16 files -
io.open
विभिन्न एन्कोडिंग में फाइल खोलते समय preambles को अलग करना माना जाता है।
उदाहरण के लिए, UTF-8-SIG
के साथ एन्कोडेड निम्न फ़ाइल को स्ट्रिंग में पढ़ने से पहले इसे ठीक से छीन लिया गया है:
(नोट: मैं नहीं हूं इन फ़ाइलों को द्विआधारी मोड में खोलना। इन लॉग की पहली पंक्ति उन फाइलों की सामग्री प्रदर्शित करना है जो पढ़ने के बारे में हैं।)
# कच्चे बाइनरी, ताकि आप देख सकें कि यह एक है उचित UTF-8-SIG एन्कोडेड फ़ाइल आयात IO; io.open (csv_file_path, 'br')। ReadLine () '\ XEF \ xbb \ "eventID", "दर", "Attribute1", "Attribute2", "xbf (\ XEF \ xbd \ XA1 \ XEF \ xbd \ Xa5 \ xcf \ x89 \ xef \ xbd \ xa5 \ xef \ xbd \ xa1) \ xef \ xbe \ x89 "\ r \ n '# निर्दिष्ट एन्कोडिंग के साथ फाइल खोलें; io.open (csv_file_path, एन्कोडिंग = 'UTF-8-SIG')। ReadLine () यू ' "eventID", "दर", "Attribute1", "Attribute2" "(\ uff61 \ uff65 \ u03c9 \ uff65 \ uff61 ) \ Uff89 "\ n '
लेकिन जब UTF-16LE
एन्कोडिंग के साथ इस फाइल को सफलतापूर्वक खोला जा रहा है, तो प्रस्तावना इसके साथ आ रही है:
# कच्चे बाइनरी, ताकि आप देख सकें कि यह उचित यूटीएफ -16LE एन्कोडेड फ़ाइल आयात है; io.open (csv_file_path, 'br')। ReadLine () '\ xff \ XFE "\ x00E \ x00v \ x00e \ x00n \ x00t \ x00I \ x00d \ x00" \ x00, \ x00 "\ x00R \ x00a \ x00t \ x00e \ x00 "\ x00, \ x00" \ x00A \ x00t \ x00t \ x00r \ x00i \ x00b \ x00u \ x00t \ x00e \ x001 \ x00 "\ x00, \ x00" \ x00A \ x00t \ x00t \ x00r \ x00i \ x00b \ x00u \ x00t \ x00e \ X002 \ x00 "\ x00, \ x00" \ x00 (\ x00a \ xffe \ xff \ xc9 \ x03e \ xffa \ xff) \ x00 \ x89 \ xff "\ x00 \ r \ x00 \ एन '# एन्कोडिंग निर्दिष्ट आयात के साथ फाइल io; io.open (csv_file_path, एन्कोडिंग = 'UTF-16LE')। ReadLine (यू) '\ "eventID" ufeff, "दर", "Attribute1", "Attribute2" "(\ uff61 \ uff65 \ u03c9 \ uff65 \ uff61 ) \ Uff89 "\ n '
यह फाइल प्रमाणन को तोड़ने वाला है जो उम्मीद करता है कि फाइल सामग्री को " EventId "के साथ शुरू करने के लिए ...
क्या मैं इस फ़ाइल को ग़लत तरीके से खोल रहा हूं?
ध्यान दें कि फ़ाइल खोलने के बाद मुझे मैन्युअल रूप से छापने की ज़रूरत नहीं है - मैं मनमानी एन्कोडिंग का समर्थन करना चाहता हूं और मुझे उम्मीद है कि IO .Open
(सही एन्कोडिंग के साथ आपूर्ति, chardet द्वारा ज्ञात हुआ) दूर सार की जरूरत मुझे कठिन कोडित प्रस्तावना अगर पहली पंक्ति के आरंभ में सामना करना पड़ा छोड़ का एक समूह है करने के लिए कर सकते हैं।
के अनुसार, आपको UTF-16
, नहीं UTF-16LE < / code>।
io.open (csv_file_path, एन्कोडिंग = 'UTF-16')। ReadLine ()
Comments
Post a Comment