Txt ফাইলের এনকোডিং পরিবর্তন করুন


16

আমি যখন লিখি:

file file1.txt 

আমার এই আউটপুটটি রয়েছে: সিআর লাইন টার্মিনেটর সহ লিটল-এন্ডিয়ান ইউটিএফ -16 ইউনিকোড পাঠ্য

তারপরে যদি আমি লিখি:

file file2.txt 

আমার আছে: ASCII পাঠ্য

file2.txt তৈরি করে তৈরি করা হয়েছে:

echo $var > "file2.txt"

আমি চাই চাই file2.txt ফাইলের ফাইল 1.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

আপনি যদি এটিকে অবমূল্যায়ন করেন তবে আপনি কেন ব্যাখ্যা করবেন?
সীমানা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.