আপনার ফাইল রূপান্তর করার সময়, আপনি নিশ্চিত হওয়া উচিত যে এটিতে একটি বাইট-অর্ডার চিহ্ন রয়েছে। যদিও মানদণ্ডটি ইউটিএফ -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