text - चरित्र सेट के बीच पाठ फ़ाइलों को परिवर्तित करने का सबसे अच्छा तरीका?




unicode utf-8 (9)

Iconv बैश फ़ंक्शन का प्रयास करें

मैंने इसे .bashrc में रखा है:

utf8()
{
    iconv -f ISO-8859-1 -t UTF-8 $1 > $1.tmp
    rm $1
    mv $1.tmp $1
}

.. फाइलों को इस तरह कनवर्ट करने में सक्षम होने के लिए:

utf8 MyClass.java

चरित्र सेट के बीच पाठ फ़ाइलों को परिवर्तित करने का सबसे तेज़, आसान टूल या तरीका क्या है?

विशेष रूप से, मुझे यूटीएफ -8 से आईएसओ -885 9-15 और इसके विपरीत में कनवर्ट करने की आवश्यकता है।

सबकुछ जाता है: आपकी पसंदीदा स्क्रिप्टिंग भाषा में एक-लाइनर, ओएस, वेब साइट इत्यादि के लिए कमांड लाइन टूल्स या अन्य यूटिलिटीज

अब तक का सबसे अच्छा समाधान:

लिनक्स / यूनिक्स / ओएस एक्स / साइगविन पर:

  • ट्रॉल्स आर्विन द्वारा सुझाए गए जीएनयू iconv का सबसे अच्छा फ़िल्टर के रूप में उपयोग किया जाता है । यह सार्वभौमिक रूप से उपलब्ध प्रतीत होता है। उदाहरण:

    $ iconv -f UTF-8 -t ISO-8859-15 in.txt > out.txt
    

    जैसा कि Ben द्वारा इंगित किया गया है, आइकनव का उपयोग कर एक ऑनलाइन कनवर्टर है

  • Cheekysoft द्वारा सुझाए गए Cheekysoft ( manual ) एक या कई फाइलों को जगह में परिवर्तित कर देगा। उदाहरण:

    $ recode UTF8..ISO-8859-15 in.txt
    

    यह छोटे उपनाम का उपयोग करता है:

    $ recode utf8..l9 in.txt
    

    रिकोड भी सतहों का समर्थन करता है जिसका उपयोग विभिन्न लाइन समाप्ति प्रकारों और एन्कोडिंग के बीच कनवर्ट करने के लिए किया जा सकता है:

    एलएफ (यूनिक्स) से सीआर-एलएफ (डीओएस) में नई लाइनों को कनवर्ट करें:

    $ recode ../CR-LF in.txt
    

    बेस 64 एन्कोड फ़ाइल:

    $ recode ../Base64 in.txt
    

    आप उन्हें गठबंधन भी कर सकते हैं।

    बेस 64 एन्कोडेड यूटीएफ 8 फ़ाइल को यूनिक्स लाइन एंडिंग के साथ बेस 64 एन्कोडेड लैटिन 1 फ़ाइल को डॉस लाइन एंडिंग के साथ कनवर्ट करें:

    $ recode utf8/Base64..l1/CR-LF/Base64 file.txt
    

पावरहेल के साथ विंडोज़ पर ( जय बाजूज़ी ):

  • PS C:\> gc -en utf8 in.txt | Out-File -en ascii out.txt

    (हालांकि कोई आईएसओ -885 9-15 समर्थन नहीं है; यह कहता है कि समर्थित वर्णसेट यूनिकोड, utf7, utf8, utf32, ascii, bigendianunicode, डिफ़ॉल्ट, और ओम हैं।)

संपादित करें

क्या आपका मतलब आईएसओ -885 9 -1 समर्थन है? "स्ट्रिंग" का उपयोग करना इस तरह के विपरीत है

gc -en string in.txt | Out-File -en utf8 out.txt

नोट: संभावित गणना मूल्य "अज्ञात, स्ट्रिंग, यूनिकोड, बाइट, बिग इंडियन यूनिकोड, यूटीएफ 8, यूटीएफ 7, अससी" हैं।


नोटपैड ++ आज़माएं

विंडोज़ पर मैं आईएसओ -885 9 -1 से यूटीएफ -8 में रूपांतरण करने के लिए नोटपैड ++ का उपयोग करने में सक्षम था। "Encoding" क्लिक करें और फिर "Convert to UTF-8" करें "Encoding" क्लिक करें।


स्वत: पहचान के साथ, खोज का उपयोग कर Oneliner

सभी मिलान करने वाली टेक्स्ट फ़ाइलों का वर्ण एन्कोडिंग स्वचालित रूप से पता चला है और सभी मिलान करने वाली टेक्स्ट फ़ाइलों को utf-8 एन्कोडिंग में परिवर्तित कर दिया गया है:

$ find . -type f -iname *.txt -exec sh -c 'iconv -f $(file -bi "$1" |sed -e "s/.*[ ]charset=//") -t utf-8 -o converted "$1" && mv converted "$1"' -- {} \;

इन चरणों को करने के लिए, उप-शेल sh का उपयोग -exec साथ किया जाता है, -c ध्वज के साथ एक-लाइनर चलाता है, और फ़ाइल नाम को "$1" साथ स्थितित्मक तर्क के रूप में पास करता है -- {} । बीच में, utf-8 आउटपुट फ़ाइल को अस्थायी रूप से converted

जिससे file -bi अर्थ है:

  • -बी, - संक्षिप्त
    आउटपुट लाइनों (संक्षिप्त मोड) में फ़ाइल नामों को प्रीपेड न करें।

  • -i, - माइम
    अधिक पारंपरिक मानव पठनीय लोगों की बजाय माइम प्रकार स्ट्रिंग आउटपुट करने के लिए फ़ाइल कमांड का कारण बनता है। इस प्रकार यह 'टेक्स्ट / सादा' कह सकता है; "ASCII पाठ" की बजाय charset = us-ascii '।

इस तरह के फ़ाइल प्रबंधन स्वचालन के लिए find आदेश बहुत उपयोगी है।

गैलरी find लिए यहां क्लिक करें।


PHP iconv ()

iconv("UTF-8", "ISO-8859-15", $input);


जैसा कि मैंने फ़ाइल के चरित्र एन्कोडिंग को सही कैसे किया है, इस पर वर्णित है ? इसे समझो! आपको आईसीयू लाइब्रेरी द्वारा समर्थित सभी एन्कोडिंग के बीच ओएस एक्स पर आसानी से रूपांतरित करने देता है।

इसके अतिरिक्त आप अपनी फ़ाइल के लिए सही एक त्वरित देखने के लिए सभी एन्कोडिंग से यूनिकोड में अनुवाद की गई फ़ाइल के कुछ बाइट्स प्रदर्शित कर सकते हैं।


डॉस / विंडोज़: कोड पेज का उपयोग करें

chcp 65001>NUL
type ascii.txt > unicode.txt

कोड पेज को बदलने के लिए कमांड chcp का उपयोग किया जा सकता है। कोड पृष्ठ 65001 यूटीएफ -8 के लिए माइक्रोसॉफ्ट का नाम है। कोड पेज सेट करने के बाद, निम्न आदेशों द्वारा उत्पन्न आउटपुट कोड पेज सेट का होगा।


iconv (1)

iconv -f FROM-ENCODING -t TO-ENCODING file.txt

इसके अलावा कई भाषाओं में iconv- आधारित उपकरण हैं।



Get-Content -Encoding UTF8 FILE-UTF8.TXT | Out-File -Encoding UTF7 FILE-UTF7.TXT

सबसे छोटा संस्करण, यदि आप मान सकते हैं कि इनपुट बीओएम सही है:

gc FILE.TXT | Out-File -en utf7 file-utf7.txt




character-set