मैं * nix कमांड लाइन टूल्स का उपयोग करके कई फाइलों को UTF-8 एन्कोडिंग में कैसे बदल सकता हूं? [डुप्लिकेट]


46

संभव डुप्लिकेट:
एन्कोडिंग या लाइन समाप्त होने के लिए बैच-कन्वर्ट फ़ाइलें

मेरे पास पाठ फ़ाइलों का एक गुच्छा है जो मैं किसी भी charset से UTF-8 एन्कोडिंग में परिवर्तित करना चाहता हूं।

वहाँ किसी भी कमांड लाइन उपकरण या पर्ल (या अपनी पसंद की भाषा) एक लाइनर मैं इस एन मालिश करने के लिए उपयोग कर सकते हैं?

जवाबों:


56

iconv कई चरित्र एन्कोडिंग के बीच परिवर्तित करता है। इसलिए थोड़ा बैश मैजिक जोड़ना और हम लिख सकते हैं

for file in *.txt; do
    iconv -f ascii -t utf-8 "$file" -o "${file%.txt}.utf8.txt"
done

यह iconv -f ascii -t utf-8प्रत्येक फ़ाइल को समाप्त करने के लिए चलेगा .txt, उसी फ़ाइल को एक ही नाम के साथ फ़ाइल को पुन: भेज रहा है, लेकिन .utf8.txtइसके बजाय समाप्त हो रहा है .txt

ऐसा नहीं है कि यह वास्तव में आपकी फ़ाइलों के लिए कुछ भी करेगा (क्योंकि ASCII UTF-8 का सबसेट है), लेकिन एनकोडिंग के बीच कैसे परिवर्तित किया जाए, इस बारे में आपके प्रश्न का उत्तर देने के लिए।


2
रिक्त स्थान के साथ फ़ाइलनाम को संभालने के लिए आपको var $ i को उद्धृत करना चाहिए।
रिचर्ड हॉकिंस

यह काम करेगा, यह एक के लिए एक बीओएम जोड़ देगा ...
जेसन

क्या आप सुनिश्चित हैं कि iconv एक BOM जोड़ देगा? मैं इस धारणा के तहत था कि यह UTF-8 के साथ नहीं होगा।
रिचर्ड हॉकिंस

5
मैंने अभी iconv (GNU libiconv 1.11) के साथ इसका परीक्षण किया, और इसमें BOM नहीं जोड़ा गया। यह मेरी समझ है कि iconv केवल एक BOM जोड़ देगा यदि कोई इनपुट में मौजूद है, जो कि ASCII में नहीं होगा। BOM समस्याग्रस्त हैं, और UTF-8 के साथ आवश्यक नहीं हैं।
रिचर्ड हॉकिंस

2
यदि iconv का आपका संस्करण -o पैरामीटर का समर्थन नहीं करता है, तो आप शेल पुनर्निर्देशन का उपयोग करने के लिए इसे सीधे >> से बदल सकते हैं।
लूट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.