इस प्रश्न से प्रेरित होकर , क्या मैं iconv
किसी BOM के साथ और निर्दिष्ट धीरज के साथ UTF-16 आउटपुट जेनरेट करने के लिए कमांड का उपयोग कर सकता हूं ?
iconv
एक से दूसरे एन्कोडिंग से आदेश धर्मान्तरित पाठ।
उदाहरण के लिए:
echo hello | iconv -f ascii -t utf-16
UTF-16 का प्रतिनिधित्व करता है "hello\n"
।
यूटीएफ -16 फाइलें अक्सर, लेकिन हमेशा नहीं, एक बाइट ऑर्डर मार्क (बीओएम) से शुरू होती हैं, जो यूनिकोड चरित्र का 2-बाइट एन्कोडिंग है U+FEFF
। आप पहले दो बाइट्स हैं FE FF
या नहीं, इसकी जाँच करके BOM के साथ UTF-16 फ़ाइल की समाप्ति का निर्धारण कर सकते हैं FF FE
।
iconv
आदेश UTF-16 के उत्पादन पैदा करने के लिए कई विकल्प हैं:
$ iconv --list | grep -i utf-16
UTF-16//
UTF-16BE//
UTF-16LE//
यह आदेश:
echo hello | iconv -f ascii -t utf-16be
बिना किसी BOM वाले बड़े-एंडियन UTF-16 बनाता है ; ऐसा लगता है कि यदि आपने धीरज निर्दिष्ट किया है, तो आपको इसे आउटपुट में इंगित करने की आवश्यकता नहीं है। इसी तरह, utf-16le
बिना बीओएम वाले छोटे-एंडियन यूटीएफ -16 उत्पन्न करता है।
इस:
echo hello | iconv -f ascii -t utf-16
एक बीओएम के साथ (मेरे x86 उबंटू सिस्टम पर) छोटे-एंडियन यूटीएफ -16 उत्पन्न करता है - लेकिन मैंने एक समान कमांड की रिपोर्ट देखी है जो बीओएम के साथ बड़े-एंडियन यूटीएफ -16 को उत्पन्न करता है, यहां तक कि थोड़ा-एंडियन सिस्टम पर भी।
मैं हमेशा बॉम को मैन्युअल रूप से उपयोग utf-16be
या utf-16le
प्रीपेंड कर सकता हूं , लेकिन मैं एक ऐसे समाधान की तलाश कर रहा हूं जो सिर्फ iconv
कमांड का उपयोग करता है ।
एक और वर्कअराउंड, यदि आप जानते हैं कि एंडियननेस क्या -t utf-16
उत्पन्न करता है:
echo hello | iconv -f ascii -t utf-16 | dd conv=swab 2>/dev/null
मैं जो उपयोग करना चाहता हूं वह कुछ इस प्रकार है:
iconv -f ascii -t utf-16bebom # big-endian with BOM
iconv -f ascii -t utf-16lebom # little-endian with BOM
लेकिन iconv
उस का समर्थन नहीं करता है।
संपादित करें:
क्या कोई x86 मैक OSX सिस्टम के साथ कोई व्यक्ति निम्नलिखित कमांड के (कॉपी-एंड-पेस्ट) आउटपुट दिखाते हुए एक टिप्पणी पोस्ट कर सकता है?
echo hello | iconv -f ascii -t utf-16 | od -x
iconv
- और सोच रहा था कि -t utf-16
अंत्येष्टि को अनिर्दिष्ट छोड़ने के लिए क्यों लगता है।
iconv -f UTF-8 -t UTF-16
, एक छोटे से एंडियन सिस्टम (मैकओएस) पर चलता है , जो एक बीओएम के साथ बड़े-एंडियन यूटीएफ -16 का निर्माण करता है, जो बहुत ही अजीब लगता है।