Txt फ़ाइल की एन्कोडिंग बदलें


16

जब मैं लिखता हूं:

file file1.txt 

मेरे पास यह आउटपुट है: लिटिल-एंडियन यूटीएफ -16 यूनिकोड टेक्स्ट, जिसमें सीआर लाइन टर्मिनेटर हैं

अगर मैं लिखूं तो:

file file2.txt 

मेरे पास है: ASCII पाठ

file2.txt बनाकर बनाया गया है:

echo $var > "file2.txt"

मैं चाहूंगा कि file2.txt में file1.txt की तुलना में समान एन्कोडिंग हो। मैं उसे कैसे कर सकता हूँ ?

जवाबों:


25

आप iconvफ़ाइल के एन्कोडिंग को परिवर्तित करने के लिए उपयोग कर सकते हैं :

iconv -f ascii -t utf16 file2.txt > another.txt

another.txt तब वांछित एन्कोडिंग होनी चाहिए।

आप यह भी आज़मा सकते हैं:

echo $var | iconv -f ascii -t utf16 > "file2.txt"


0

अपनी फ़ाइल को परिवर्तित करते समय, आपको यह सुनिश्चित करना चाहिए कि इसमें एक बाइट-ऑर्डर चिह्न है। भले ही मानक कहता है कि यूटीएफ -8 के लिए बाइट-ऑर्डर-मार्क की सिफारिश नहीं की गई है , लेकिन यूटीएफ -8 और एएससीआईआई के बीच बाइट-ऑर्डर मार्क के बिना वैध भ्रम हो सकता है

इसके अतिरिक्त, बाइट-ऑर्डर मार्क को निर्दिष्ट UTF-16BEया निर्दिष्ट UTF-16LE नहीं करता है , इसलिए मैं सबसे पहले परिवर्तित UTF-16करता हूं , जो एक प्लेटफ़ॉर्म-निर्भर धीरज का उपयोग करता है। फिर, मैं fileवास्तविक एंडियननेस और उस से कन्वर्ट को निर्धारित करने के लिए उपयोग करता हूं UTF-16LE

अंत में, जब आप का उपयोग कर एक फ़ाइल बनाने bash, फ़ाइल प्राप्त करता bashहै locale charmapएन्कोडिंग, तो आपको क्या चाहिए से मैप करने के लिए कि।

(मैं अपने सभी एन्कोडिंग्स को अपरकेस करता हूं क्योंकि जब आप सभी iconvसमर्थित एनकोडिंग्स को सूचीबद्ध iconv -lकरते हैं, तो वे सभी अपरकेस हैं।)

BASH_ENCODING="$( locale charmap | tr [:lower:] [:upper:] )"
echo $var | iconv -f "$BASH_ENCODING" -t UTF-16 > UTF-16-UNKNOWN-ENDIANNESS-FILE
FILE_ENCODING="$( file --brief --mime-encoding UTF-16-UNKNOWN-ENDIANNESS-FILE )"
iconv -f "$FILE_ENCODING" -t UTF-16LE UTF-16-UNKNOWN-ENDIANNESS-FILE > file2.txt

यदि आपने इसे नकार दिया, तो क्या आप बताएंगे कि क्यों?
हीथ बॉर्डर्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.