ফাইলটি ঠিক আছে — এটি ভুলভাবে পড়া হয়েছিল
একটি সাবটাইটেল ফাইল আসলে বাইট সংরক্ষণ করে। বাইটকে ক্যারেক্টারে রূপান্তর করতে হলে সেটি কোন এনকোডিংয়ে লেখা হয়েছিল তা জানা আবশ্যক — সেই এনকোডিং ভুল হলে মজিবেক দেখা দেয়। ফাইল থেকে একটি বাইটও হারিয়ে যায়নি; সঠিক এনকোডিং দিয়ে আবার পড়লেই ক্যারেক্টারগুলো ফিরে আসে।
এটি কাজটি দুটি ভাগে ভাগ করে: এটি কোন এনকোডিংয়ে শুরু হয়েছিল তা বের করা, এবং আপনার প্লেয়ার চিনতে পারে এমন এনকোডিংয়ে এটি সংরক্ষণ করা। প্রথমটি ট্রায়াল ডিকোডিং এবং স্কোরিং থেকে আসে, আর দ্বিতীয়টি একটি কপি সংরক্ষণ করার মাধ্যমে। এগুলো ভিন্ন ভিন্ন সমস্যার সমাধান করে।
পাঁচটি রূপ, পাঁচটি কারণ
মজিবেক এলোমেলো নয় — এটি দেখতে কেমন তার ওপর নির্ভর করে এর কারণ বোঝা যায়:

কেন রিপ্লেসমেন্ট ক্যারেক্টার মেরামত করা যায় না
রিপ্লেসমেন্ট ক্যারেক্টার হলো বিভাজন রেখা। একটি `` মানে হলো বাইটগুলো পূর্ববর্তী কোনো ধাপে (সাধারণত কোনো প্রোগ্রাম ফাইলটি পড়ে আবার সেভ করার সময়) ইতিমধ্যেই ফেলে দেওয়া হয়েছে এবং কী বাদ পড়েছে সে সম্পর্কে কিছুই রেকর্ড করা হয়নি। সেই পর্যায়ে পেছনে ফিরে আসার আর কোনো উপায় থাকে না — কেউ এটি মেরামত করতে পারে না।
তাই মেরামতের পেজটি দুটি কেস ভিন্নভাবে হ্যান্ডেল করে। একটি ফাইল আপলোড করলে মূল বাইটগুলো অক্ষত থাকে, যার ফলে এটি প্রতিটি এনকোডিং পরীক্ষা করে দেখতে পারে; আর পেস্ট করা টেক্সটে যদি ইতিমধ্যেই রিপ্লেসমেন্ট ক্যারেক্টার থাকে, তবে তা পরিষ্কার বলে দেয়: "মেরামত করা সম্ভব নয়, অনুগ্রহ করে মূল ফাইলটি আপলোড করুন"।
বিপরীত কেসটিও রয়েছে: কন্টেন্টটি খুব ভালোভাবে পড়া যাচ্ছে কিন্তু আপনার প্লেয়ার এখনও গার্বেজ দেখাচ্ছে। ফাইলটির কোনো দোষ নেই — প্লেয়ারটি ভুল এনকোডিং বেছে নিয়েছে। টেক্সট এডিট করলে কোনো লাভ হবে না; BOM সহ UTF-8 বা GBK হিসেবে একটি কপি সেভ করে প্লেয়ারে দিন।

মেরামত করার সময় কী তুলনা করা হয়
টুলটি প্রতিটি সম্ভাব্য এনকোডিং চেষ্টা করে, তারপর প্রতিটি ফলাফলের স্কোর করে: এর কত অংশ সাধারণ ক্যারেক্টার দিয়ে তৈরি, অ্যাকসেন্টের স্ট্রিং আছে কিনা, প্রতীকের স্ট্রিং আছে কিনা, CJK রানগুলো অস্পষ্ট অক্ষরের প্রাচুর্য কিনা। সেরা স্কোর পাওয়া ফলাফলটি তালিকার শীর্ষে চলে যায়।
যদি কোনো স্কোর স্পষ্টতই ভালো না হয়, তবে কোনোটিরই সুপারিশ করা হয় না — ভাষার সঙ্গে কেবল অস্পষ্টভাবে মেলে এমন কিছু দিয়ে ভুল পথে চালিত করার চেয়ে "এটি যেভাবে আছে সেভাবেই পড়া যাচ্ছে" বলে দেওয়া ভালো। দুবার বিকৃত হওয়া টেক্সট (একবার ভুল সেভ হয়েছে, তারপর একবার ভুল মেরামত হয়েছে) শীর্ষ প্রার্থীগুলোর ওপর ব্যাক-সলোভিংয়ের আরও একটি অতিরিক্ত রাউন্ড পায়।

সঠিক এনকোডিংয়ে সেভ করলেই কাজ শেষ হয়
মেরামত করা টেক্সট এখনও এমন একটি এনকোডিংয়ে সেভ করতে হবে যা আপনার প্লেয়ার চিনতে পারে। উইন্ডোজের প্লেয়ারগুলো সাধারণত এনকোডিং শনাক্ত করতে BOM-এর ওপর নির্ভর করে, তাই BOM সহ UTF-8 সবচেয়ে ঝামেলাহীন; পুরোনো হার্ডওয়্যার এবং কিছু আঞ্চলিক প্লেয়ার GBK চায়। আপনি UTF-8, UTF-8 (BOM সহ), GBK, Big5, Shift_JIS বা EUC-KR বেছে নিতে পারেন, আর কোনো কিছু খাপ না খেলে আপনাকে অন্য একটি বেছে নিতে বলা হবে (GBK কোরিয়ান ভাষা ধারণ করতে পারে না)।

সম্পর্কিত টুলস এবং নির্দেশিকা
সম্পূর্ণ ওয়াকথ্রু — How to repair mojibake subtitles; একটি SRT ফাইলে আসলে কী সংরক্ষিত থাকে — What is inside an SRT file; এনকোডিং ঠিক আছে কিন্তু কন্টেন্ট অপরিচ্ছন্ন (জলছাপ, বিজ্ঞাপন, শ্রবণপ্রতিবন্ধীদের ট্যাগ) — Subtitle cleanup।