2012-10-21 16 views
57

मेरे पास अरबी, अंग्रेजी, रूसी फाइलों का एक समूह है जो utf-8 में एन्कोड किए गए हैं। इन एक पर्ल स्क्रिप्ट का उपयोग फ़ाइलों को प्रोसेस करने की कोशिश कर रहा है, मैं इस त्रुटि मिलती है:टेक्स्ट फ़ाइल से गैर यूटीएफ -8 अक्षरों को कैसे हटाएं

Malformed UTF-8 character (fatal) 

मैन्युअल इन फ़ाइलों की सामग्री की जाँच, मैं उन्हें में कुछ अजीब पात्रों पाया। अब मैं इन वर्णों को फ़ाइलों से स्वचालित रूप से हटाने का एक तरीका ढूंढ रहा हूं।

क्या ऐसा करने के लिए वैसे भी है?

+2

शायद यह वही है: http://stackoverflow.com/questions/7656283/malformed-utf-8-character-fatal-error-while-parsing-xml-using-xmllibxml –

+2

कृपया इस लिंक का संदर्भ लें: http://unix.stackexchange.com/questions/6516/filtering-invalid-utf8 – askmish

+3

गैर यूटीएफ -8 वर्ण क्या हैं? एक अच्छी तरह से गठित यूटीएफ -8 स्ट्रिंग में सभी वर्ण यूटीएफ -8 (वास्तव में यूनिकोड) वर्ण हैं! उनमें से कुछ यूटीएफ -8 लगातार कई बाइट्स में एन्कोड किए गए हैं .... –

उत्तर

0

आपकी विधि बाइट द्वारा बाइट को पढ़ना चाहिए और वर्णों के बाइट वार निर्माण को पूरी तरह से समझना और सराहना करना चाहिए। सबसे आसान तरीका एक संपादक का उपयोग करना है जो कुछ भी पढ़ेगा लेकिन केवल यूटीएफ -8 अक्षरों को आउटपुट करेगा। टेक्स्टपैड एक विकल्प है।

+0

iconv साइगविन में उपलब्ध नहीं है। क्या विंडोज़/साइगविन पर ऐसा करने का कोई तरीका है? मेरे पास एक बड़ी (100000+ लाइनें) एक्सएमएल फ़ाइल है जिसे अमान्य वर्णों को अलग करने की आवश्यकता है। मुझे वैध यूटीएफ -8 की परवाह नहीं है। मैंने utf-8 को नोटपैड ++ सेट किया है, लेकिन वहां से इसे सहेजने के बाद भी मुझे मैक पर एक्सएमएल पार्सर – mljm

111

यह आदेश:

iconv -f utf-8 -t utf-8 -c file.txt 

, अपने UTF-8 फ़ाइल को साफ होगा सभी अमान्य वर्ण लंघन।

-f is the source format 
-t the target format 
-c skips any invalid sequence 
+10

"iconv -f utf-8 -t utf-8 -c file.txt" में त्रुटियां मिलती हैं। 'एफ' और '8' – Colin

+0

के बीच हाइफ़न सही, हाइफ़न आवश्यक हैं। संपादन के लिए धन्यवाद। आप iconv --list – Palantir

+0

के माध्यम से समर्थित एन्कोडिंग की सूची प्राप्त कर सकते हैं सुविधाजनक रूप से आप मैक पर क्लिपबोर्ड सामग्री को बदल सकते हैं: 'pbpaste | iconv -f utf-8 -t -utf-8 -c | pbcopy'। मैंने 'ascii 'को लक्षित करके सभी विशेष पात्रों को अलग करने के लिए वैश्विक शॉर्टकट के साथ एक अल्फ्रेड वर्कफ़्लो भी बनाया। –

-2
cat foo.txt | strings -n 8 > bar.txt 

काम करेगा।

+7

के लिए –

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