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