পাঠ্য ফাইল এনকোডিং রূপান্তর করুন


15

চরিত্রের এনকোডিংয়ের সমস্যাগুলির সাথে আমি প্রায়শই পাঠ্য ফাইলগুলি (যেমন আমার স্থানীয় ভাষায় সাবটাইটেল ফাইল, ফারসি ) এর মুখোমুখি হই । এই ফাইলগুলি উইন্ডোজে তৈরি করা হয়েছে এবং একটি অনুপযুক্ত এনকোডিং (এএনএসআই বলে মনে হচ্ছে) দিয়ে সংরক্ষণ করা হয়েছে, যা জিব্রিশ এবং অপঠনযোগ্য বলে মনে হচ্ছে:

এখানে চিত্র বর্ণনা লিখুন

উইন্ডোজে, নীচের মতো এনকোডিংটি ইউটিএফ -8 এ রূপান্তর করতে নোটপ্যাড ++ ব্যবহার করে সহজেই এটি ঠিক করা যায় :

এখানে চিত্র বর্ণনা লিখুন

এবং সঠিক পাঠযোগ্য ফলাফলটি এরকম:

এখানে চিত্র বর্ণনা লিখুন

আমি জিএনইউ / লিনাক্সে অনুরূপ সমাধানের জন্য অনেক অনুসন্ধান করেছি, তবে দুর্ভাগ্যক্রমে প্রস্তাবিত সমাধানগুলি (যেমন এই প্রশ্নটি ) কার্যকর হয় না। সর্বোপরি, আমি লোকদের পরামর্শ দেখেছি iconvএবং recodeতবে এই সরঞ্জামগুলির সাথে আমার কোনও ভাগ্য হয়নি। আমি অনুসরণ সহ অনেক কমান্ড পরীক্ষা করেছি এবং সমস্ত ব্যর্থ হয়েছে:

$ recode ISO-8859-15..UTF8 file.txt
$ iconv -f ISO8859-15 -t UTF-8 file.txt > out.txt
$ iconv -f WINDOWS-1252 -t UTF-8 file.txt > out.txt 

এর কোনটিই কাজ করেনি!

আমি উবুন্টু -14.04 ব্যবহার করছি এবং আমি একটি সহজ সমাধান (জিইউআই বা সিএলআই) সন্ধান করছি যা নোটপ্যাড ++ এর মতোই কাজ করে।

"সরল" হওয়ার একটি গুরুত্বপূর্ণ বিষয় হ'ল ব্যবহারকারীর উত্স এনকোডিং নির্ধারণের প্রয়োজন হয় না; বরং উত্স এনকোডিংটি স্বয়ংক্রিয়ভাবে সরঞ্জামটির মাধ্যমে সনাক্ত করা উচিত এবং কেবলমাত্র লক্ষ্য এনকোডিং ব্যবহারকারীর দ্বারা সরবরাহ করা উচিত। তবে তবুও, আমি এমন একটি কার্যকরী সমাধান সম্পর্কে জানতে পেরে খুশি হব যা উত্সের এনকোডিং সরবরাহ করতে হবে।

কারও যদি বিভিন্ন সমাধান পরীক্ষা করার জন্য টেস্ট-কেসের প্রয়োজন হয় তবে উপরের উদাহরণটি এই লিঙ্কটির মাধ্যমে অ্যাক্সেসযোগ্য ।


2
চেষ্টা করুন: vim '+set fileencoding=utf-8' '+wq' file.txt
মুড়ু

ফার্সি হওয়া উচিত iso-639কিন্তু যে পারেন পাওয়া যাবে বলে মনে হচ্ছে না iconvবা recode। কমপক্ষে, আমি এটি আউটপুটে দেখতে পাচ্ছি না iconv -l
টেরডন

@ মুরু আমি আপনার পরামর্শটি দিয়ে পরীক্ষা করেছি vimকিন্তু এটি কার্যকর হয়নি।
সৈয়দ মোহাম্মদ

@ সাইয়েদমোহমদ এখনও কি একই দেখাচ্ছে?
মুড়ু

@ মুরু ইউ! পরিবর্তন নেই.
সৈয়দ মোহাম্মদ

উত্তর:


12

ফারসি পাঠ্যযুক্ত এই উইন্ডোজ ফাইলগুলি উইন্ডোজ -১ 125 1256 এ এনকোড করা আছে । সুতরাং এটি ওপির অনুরূপ কমান্ড দ্বারা পৃথক করা যেতে পারে, তবে বিভিন্ন অক্ষর সহ। যথা:

recode Windows-1256..UTF-8 <Windows_file.txt > UTF8_file.txt
(মূল পোস্টারের অভিযোগের নিন্দিত; মন্তব্য দেখুন)

iconv -f Windows-1256 Windows_file.txt > UTF8_file.txt

এটি একটি ধরে নেয় যে LANG পরিবেশের পরিবর্তনশীলটি একটি ইউটিএফ -8 লোকালে সেট করা আছে। বর্তমান লোকাল নির্বিশেষে যে কোনও এনকোডিং (ইউটিএফ -8 বা অন্যথায়) রূপান্তর করতে, কেউ বলতে পারেন:

iconv -f Windows-1256 Windows_file.txt -t ${output_encoding} > ${output_file}

মূল পোস্টারটি পাঠ্য পুনর্নির্মাণের সরঞ্জামগুলির পুনরায় সংশোধন (পুনর্নির্মাণ, আইকনভি) দিয়েও বিভ্রান্ত। সোর্স এনকোডিংয়ের জন্য ( উত্স.. বা -f) একটির অবশ্যই এনকোডিং নির্দিষ্ট করতে হবে যা দিয়ে ফাইলটি সংরক্ষণ করা হয়েছে (যে প্রোগ্রামটি এটি তৈরি করেছে সেটি দ্বারা)। প্রোগ্রামগুলিতে মোজিবাকে অক্ষরের উপর ভিত্তি করে কিছু (নির্দোষ) অনুমান করা হয়নি যা এটি পড়ার চেষ্টা করে (তবে ব্যর্থ হয়)। ফারসি পাঠ্যের জন্য আইএসও -8859-15 বা উইন্ডো -1222 চেষ্টা করা স্পষ্টতই একটি অচলাবস্থা ছিল: এই এনকোডিংগুলিতে কেবল কোনও পার্সিয়ান বর্ণ থাকে না।


@ সাইয়েদ মোহাম্মদ: এখন স্পষ্টভাবে নির্দিষ্ট কমান্ড সহ।
ইনকিনিস মিসেসি

ধন্যবাদ! দ্বিতীয় কমান্ড (যেটি ব্যবহার করছে iconv) কাজ করেছিল। তবে প্রথমটি (ব্যবহার করে recode) সঠিকভাবে কাজ করে নি এবং আউটপুটটি এখনও জঘন্য। আপনার উত্তরটি সম্পাদনা করুন কেবল iconvকমান্ড অন্তর্ভুক্ত করার জন্য এবং আমি এটি উত্তর হিসাবে চিহ্নিত করব।
সৈয়দ মোহাম্মদ

1
এছাড়াও ল্যাং ভেরিয়েবল সেটিং থেকে মুক্ত থাকার জন্য, কেউ এটি করতে পারেন: iconv -f WINDOWS-1256 -t UTF-8 in.txt > out.txtযা আমি পরীক্ষিত এবং কাজ করেছি। সুতরাং আপনার কমান্ডটি এভাবে সম্পাদনা করা ভাল ধারণা হতে পারে।
সৈয়দ মোহাম্মদ

আমি ওয়ার্কিং কমান্ডের উপর ভিত্তি করে একটি দরকারী স্ক্রিপ্ট লিখেছিলাম যা আমি এখানে অন্য উত্তরে ব্যাখ্যা করেছি। আমি আশা করি এটি অন্যান্য পার্সিয়ান লিনাক্স-ব্যবহারকারীদের সহায়তা করবে কারণ এটি আমাকে অনেক সহায়তা করে।
সৈয়দ মোহাম্মদ

@ কারেল: ধন্যবাদ, "অভিযোগ" একটি ক্রিয়া - এই শব্দগুচ্ছটি লিঙ্গহীনভাবে লেখা হয়েছিল।
ইনকনিস মিসেসি

1

এটি ছাড়াও iconv, যা নিজেই বা স্ক্রিপ্টে খুব দরকারী একটি সরঞ্জাম, সেখানে গ্রীক চরসেটগুলির জন্য একই সমস্যাটি খুঁজে পাওয়ার চেষ্টা করার মতো একটি খুব সহজ সমাধান আমি পেয়েছি (উইন্ডোজ -১২৩৩ + আইএসও -৮85৮৯-7)।

আপনাকে যা করতে হবে তা হ'ল গেডিটের "ওপেন" ডায়ালগের মাধ্যমে পাঠ্য ফাইলটি খুলুন এবং এটিতে ডাবল-ক্লিক করে নয় । ডায়লগ বাক্সের নীচে এনকোডিংয়ের জন্য একটি ড্রপ-ডাউন রয়েছে, যা "স্বয়ংক্রিয়ভাবে সনাক্ত করা" তে সেট করা আছে । এটিকে "উইন্ডোজ-125x" বা অন্যান্য উপযুক্ত কোডসেটে পরিবর্তন করুন এবং পাঠটি Gedit এ পুরোপুরি পাঠযোগ্য হবে। তারপরে আপনি এটি ইউটিএফ -8 এনকোডিং ব্যবহার করে সংরক্ষণ করতে পারবেন, ভবিষ্যতে আর আপনার একই সমস্যা হবে না তা নিশ্চিত হয়ে ...


1

সমস্যার পরিপূরক সমাধান হিসাবে, আমি ইনসনিস মিসেসির উত্তরiconv থেকে প্রাপ্ত কমান্ডের উপর ভিত্তি করে একটি দরকারী বাশ স্ক্রিপ্ট প্রস্তুত করেছি :

#!/bin/bash

if [ $# -lt 1 ]
then
   echo 'Specify at least one file to fix.'
   exit 1
fi

# Temp file to store conversion attempt(s).
tmp='tmp.fixed'

for file in "$@"
do
  # Try to fix the file encoding.
  if iconv -f WINDOWS-1256 "$file" -t UTF-8 > $tmp; then
    echo "Fixed: '$file'"
    cat $tmp > "$file"
  else
    echo "Failed to fix: '$file'"
  fi
done
rm $tmp

এই স্ক্রিপ্টটিকে এটি হিসাবে সংরক্ষণ করুন fix-encoding.sh, এটিকে ব্যবহার করে এটি কার্যকর করার অনুমতি দিন chmod +x fix-encoding.shএবং এটি এর মতো ব্যবহার করুন:

./fix-encoding.sh myfile.txt my2ndfile.srt my3rdfile.sub

এই স্ক্রিপ্টটি ইনপুট হিসাবে সরবরাহ করা যে কোনও সংখ্যক ফাইলের এনকোডিংটি ঠিক করার চেষ্টা করবে। নোট করুন যে ফাইলগুলি স্থানে স্থির করা হবে, সুতরাং সামগ্রীগুলি ওভাররাইট করা হবে।


আপনার  … ফাইলটি " …  " এর বাইরে রাখার দরকার নেই যেহেতু ভেরিয়েবলগুলি ডাবল কোটের পাশাপাশি প্রচ্ছদ পাঠ্যেও প্রসারিত হয়েছে। কেবল '$ ফাইল' বাশ দ্বারা ডলার চিহ্ন সহ আক্ষরিকভাবে রেন্ডার করা হবে।
ইনকিনিস মিসেসি

'ইনকনিস মিসেসি' পোস্ট করা উত্তরের জবাবে আমি যেমন উল্লেখ করেছি, সেই সমাধান কাজ করতে ব্যর্থ হয়েছিল এবং তাই এই স্ক্রিপ্টটিও করে না।
সৈয়দ মোহাম্মদ

1

আমি জানি না যে এটি ফার্সির সাথে কাজ করে: আমি গেডিট ব্যবহার করি, এটি ভুল এনকোডিংয়ের সাথে একটি ত্রুটি দেয় এবং আমি ইউটিএফ -8 এ যা অনুবাদ করতে চাই তা চয়ন করতে পারি, এটি কেবল পাঠ্যরূপে লিখিত বিন্যাস নয়, তবে এখানে একটি স্ক্রিনশট রয়েছে !

এখানে চিত্র বর্ণনা লিখুন

দুঃখিত, অবশেষে আমি আমার পাঠ্য ফাইলগুলি পেয়েছি, সুতরাং এখন সেগুলি সমস্ত রূপান্তরিত হয়েছে।

আমি নোটপ্যাড ++ খুব পছন্দ করেছিলাম, এখনও মিস করছি।


গেডিট সমস্যাটি সমাধান করতে পারে না। যদিও গেডিট আমার ফাইলটির জন্য একটি এনকোডিং ত্রুটি প্রদর্শন করে না, এমনকি এটি এটি ঠিক করতে না পারলেও। আমি গেডিতে ইউটিএফ -8 এনকোডিংয়ের সাথে "সেভ হিসাবে" চেষ্টা করেছি, তবে সমস্যাটি ঠিক হয় না।
সৈয়দ মোহাম্মদ

1

আপনি যদি আমার মতো সিআইএলির পরিবর্তে জিইউআইতে কাজ করতে চান:

  1. জিয়ান (সম্পাদক) দিয়ে ফাইল খুলুন
  2. ফাইল মেনুতে যান -> হিসাবে পুনরায় লোড করুন
  3. জিব্বারিশকে আপনার ভাষার সনাক্তকরণযোগ্য অক্ষরে রূপান্তর করতে অনুমানযুক্ত এনকোডিংটি চয়ন করুন। উদাহরণস্বরূপ, গ্রীক সাব পড়তে আমি পশ্চিম ইউরোপীয় -> গ্রীক (উইন্ডোজ -১৫৩) হিসাবে পুনরায় লোড করব
  4. যান ডকুমেন্ট মেনু> সেট এনকোডিং -> ইউনিকোড -> হল UTF-8
  5. সংরক্ষণ

কাজ করে না ..
অরিমাস

0

আমি যে কার্যক্ষম সমাধানটি পেয়েছি তা হ'ল মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও কোড পাঠ্য সম্পাদক যা ফ্রিওয়্যার এবং লিনাক্সের জন্য উপলব্ধ।

আপনি যে ফাইলটির এনকোডিংটি ভিএস-কোডে রূপান্তর করতে চান তা খুলুন। উইন্ডোর নীচে কয়েকটি বোতাম রয়েছে। এর মধ্যে একটি ফাইল এনকোডিং সম্পর্কিত, যা নীচে দেখানো হয়েছে:

এখানে চিত্র বর্ণনা লিখুন

এই বোতামটি ক্লিক করা একটি ওভারহেড মেনুতে পপ আপ করে যার মধ্যে দুটি আইটেম রয়েছে। এই মেনু থেকে নীচের মত "" এনকোডিং সহ পুনরায় খুলুন "বিকল্পটি নির্বাচন করুন:

এখানে চিত্র বর্ণনা লিখুন

এটি অন্য মেনুটি খুলবে যা নীচে দেখানো হয়েছে এমন বিভিন্ন এনকোডিংয়ের একটি তালিকা রয়েছে। এখন "আরবি (উইন্ডোজ 1256)" নির্বাচন করুন:

এখানে চিত্র বর্ণনা লিখুন

এটি জিব্বারিশ পাঠটিকে এভাবে ঠিক করে দেবে:

এখানে চিত্র বর্ণনা লিখুন

এখন আবার এনকোডিং বোতামটি ক্লিক করুন এবং এবার নীচে যেমন "এনকোডিং সহ সংরক্ষণ করুন" বিকল্পটি নির্বাচন করুন:

এখানে চিত্র বর্ণনা লিখুন

এবং নতুন মেনুতে "ইউটিএফ -8" বিকল্পটি নির্বাচন করুন:

এখানে চিত্র বর্ণনা লিখুন

এটি ইউটিএফ -8 এনকোডিং ব্যবহার করে সংশোধন করা ফাইলটি সংরক্ষণ করবে:

এখানে চিত্র বর্ণনা লিখুন

সম্পন্ন! :)


"এনকোডিং দিয়ে সংরক্ষণ করুন" চেষ্টা করা হয়েছে তবে এটি পূর্ববর্তী এনকোডিং এগ্রিয়ান দেখায়, আমার ক্ষেত্রে এটির ইউটিএফ 8
চৈতন্য
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.