क्या एक मैक ओएस एक्स कमांड लाइन एप्लिकेशन है जो टेक्स्ट एनकोडिंग को एक प्रकार से दूसरे में बदल सकता है? (विशेष रूप से मैक ओएस रोमन को utf8 में बदलने के लिए)


16

मैं मैक ओएस एक्स 10.8 में कमांड लाइन उपयोगिता को कॉल करना चाहूंगा जो मुझे मानक पश्चिमी मैक ओएस रोमन एन्कोडिंग में सहेजी गई पाठ फ़ाइल को अधिक सामान्य यूटीएफ -8 में बदलने की क्षमता देता है।

मैं अपने द्वारा बनाए गए AppleScript से उपयोगिता को कॉल करूंगा। बहुत बड़े टेक्स्ट ब्लॉक के साथ काम करते समय AppleScript बेहद धीमा है। जैसे, मैं ओएस एक्स कमांड लाइन का उपयोग करके अपने पाठ पार्सिंग और रूपांतरण करना चाहता हूं। मुझे "sed" नामक एक टूल मिला है, जो मुझे टेक्स्ट पार्सिंग करने की अनुमति देता है। हालाँकि, अभी भी फ़ाइल के कई तत्व हैं जिन्हें साफ करने की आवश्यकता है, जो अक्षर कचरा के रूप में दिखाई देते हैं यदि फ़ाइल utf-8 (उदाहरण के लिए स्मार्ट उद्धरण और दीर्घवृत्त) के रूप में खोली जाती है।

मैं सोच रहा हूं कि पाठ एन्कोडिंग रूपांतरण के लिए फ़ाइल में सभी गैर-utf8 वर्णों को समाप्त करने में मदद मिल सकती है। हालाँकि, मैं यह नहीं देख सकता कि कैसे "sed" टेक्स्ट एन्कोडिंग को आसानी से बदल सकता है।

मैं पहले से ही टेम्प्लेट फ़ाइल को मैकक्रोमन के रूप में सहेजा हुआ हूँ, अंतर्निहित AppleScript रूटीन का उपयोग करके डिस्क पर।

क्या आप में से किसी के पास अंतर्निहित कमांड-लाइन टूल के रूप में कोई विचार है जो पाठ एन्कोडिंग को परिवर्तित कर सकता है? प्रदर्शन और बिल्ट-इन के लिए कमांड-लाइन, क्योंकि मेरी स्क्रिप्ट के अन्य उपयोगकर्ताओं के पास आवश्यक टूलसेट नहीं होगा यदि यह अंतर्निहित नहीं है।

आपकी सहायताके लिए धन्यवाद!


कमांड iconv है।
bmargulies

@bmargulies: जब मैं MacRoman में एन्कोड की गई फ़ाइल पर आइकनव की कोशिश करता हूं और इसे UTF-8 में बदलने की कोशिश करता हूं, तो मुझे मूल "असामान्य पात्रों" के स्थान पर कचरा पात्र मिलते हैं। उदाहरण के लिए, दीर्घवृत्त "√Ѭ∂‚Äö√Ѭ∂ö।" में परिवर्तित हो जाता है। मैं अपेक्षा करूंगा कि दीर्घवृत्त छह युगों में सुंदर रूप में परिवर्तित हो जाए। स्मार्ट उद्धरण समान हैं, वे अजीब पाठ में भी परिवर्तित हो जाते हैं, "√Ñ√≤ö।" में बदल जाते हैं। मेरे द्वारा उपयोग किया जाने वाला वाक्य-विन्यास: cat source.txt | iconv -f MacRoman -t UTF-8> iconv_test.txt क्या कोई विशिष्ट सीएलआई सिंटैक्स है जो आइकनव को सभी पाठों को उचित प्रतिस्थापन में बदलने के लिए कहेगा?

और आप क्या तर्क देते हैं?
bmargulies

@ डार्कस्टार - आपकी इसी प्रक्रिया ने मेरे लिए ठीक काम किया। क्या आप सुनिश्चित हैं कि आपका स्रोत MacRoman में था?
टॉम ग्यूके

1
एक्सेल में यह समस्या नहीं होनी चाहिए, आपको आयात के लिए एन्कोडिंग सेट करने में सक्षम होना चाहिए जो आप चाहते हैं, उदाहरण के लिए देखें superuser.com/questions/280603/…
टॉम Gewecke

जवाबों:


8

गैर-ASCII वर्णों को ASCII वेरिएंट में बदलने का एक और तरीका है iconv -t ASCII//TRANSLIT:

$ echo ‘’“”–—…äé | iconv -t ASCII//TRANSLIT
''""--..."a'e

ASCII//IGNOREगैर- ASCII वर्णों को हटा देगा, लेकिन आप उदाहरण के लिए भी ऐसा कर सकते हैं tr -dc '\0-\177'


क्या iconvअनूदित होने की अनुमति है: ä → a?
dan

@danielAzuelos मुझे नहीं पता। जिस तरह से पात्रों को प्रतिस्थापित किया जाता है, हालांकि कार्यान्वयन पर निर्भर करता है: उदाहरण के लिए, आइकनव जो डेबियन की जगह äबस के साथ आता है a
18

28

iconv यहाँ निश्चित रूप से पसंद का उपकरण है:

iconv -f MACROMAN -t UTF-8 your-roman-encoded-file.txt > utf-8-encoded-file.txt

iconv --listसभी समर्थित एन्कोडिंग की एक सूची देखने के लिए चलाएँ ।


एक बार जब मुझे पता चला कि यह मैकरोमन नहीं है, लेकिन "आइसो-8859-1" था, तो मैंने फिर से कोशिश की। यह अभी भी वह नहीं था जो मैं करना चाहता था। मुझे नहीं लगता कि इकोव मैं वह कर सकता हूं जो मैं करना चाहता हूं: कृपा से सभी फैंसी विस्तारित पात्रों को मानक अवधि और एपोस्ट्रोफ और दोहरे उद्धरणों के साथ बदलें।
डार्कस्टार
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.