বাংলার বদলে ??? দেখাচ্ছে: ? আর � মানে কী

বাংলা লেখায় অক্ষরের জায়গায় ??? বা � দেখা যাচ্ছে? দুটো দেখতে একরকম, কিন্তু কারণ আলাদা। কখনো ফাইল পুরোপুরি ঠিক থাকে, কখনো অক্ষর আগেই হারিয়ে গেছে। আপনার ক্ষেত্র কোনটা, নিচে দেখে নিন।

লেখা এবং এই ফাইলগুলো চলে:

  • CSV
  • TXT
  • JSON
  • XML
  • SRT
  • VTT
  • SMI
  • TSV
  • MD
  • HTML
  • SQL
  • LOG

যেমন Excel এক্সপোর্ট, ডেটাবেস ডাম্প, সাবটাইটেল বা ওয়েবসাইটের কোড।

ঠিক করুন

  1. ফাইল টেনে আনুন বা লেখা পেস্ট করুন
  2. নিজে থেকেই ঠিক হয়ে যায়
  3. কপি বা ডাউনলোড করুন
অথবা ফাইল এখানে টেনে আনুন
  • কোনো আপলোড নেই। ফাইল আপনার ব্রাউজারেই ঠিক হয়, আপনার ডিভাইস ছেড়ে যায় না।

  • ইইউ-তে সার্ভার। Mojibuster চলে ফিনল্যান্ড-এর (ইইউ) একটি সার্ভারে, তাই ইউরোপের সাধারণ তথ্য সুরক্ষা প্রবিধান (GDPR) প্রযোজ্য। GDPR পড়ুন (EUR-Lex, ইংরেজি)

প্রথম ক্ষেত্র: ফাইল ঠিক, শুধু দেখানোয় �

বাংলার জন্য প্রচলিত কোনো পুরোনো কোড পেজ নেই, তাই অন্য ভাষার তুলনায় এই ক্ষেত্র কম দেখা যায়। � আসে যখন কোনো প্রোগ্রাম ফাইলটি ভুল এনকোডিংয়ে পড়ে, বা লেখা কোনো অক্ষরের মাঝখানে কেটে যায়। UTF-8-এ প্রতিটি বাংলা অক্ষর তিন বাইটের। অসম্পূর্ণ অক্ষরকে প্রোগ্রাম শুধু দেখানোর সময় � করে দেয়। অন্য প্রোগ্রাম একই ফাইল ঠিক দেখালে ফাইলে সঠিক বাইট আছে।

সমাধান: মূল ফাইলটি ওপরের বক্সে টেনে আনুন। Mojibuster পড়ার সময় এনকোডিং চিনে ফাইল UTF-8-এ সংরক্ষণ করে। খেয়াল রাখুন: ফাইলটাই দিন, প্রোগ্রাম থেকে লেখা কপি করবেন না – কপি করলে � চিরকালের জন্য থেকে যায়।

দ্বিতীয় ক্ষেত্র: ? বা � লেখার ভেতরেই সেভ হয়ে গেছে

কোনো প্রোগ্রাম লেখা ? বা � সহ সেভ করলে বা পাঠিয়ে দিলে মূল অক্ষর হারিয়ে যায়। প্রোগ্রাম ? বসায় যখন অক্ষরটি লক্ষ্য এনকোডিংয়ে নেই – আর ASCII, latin1 বা Windows-1252-এ একটিও বাংলা অক্ষর নেই। তাই বাংলায় এটা খুব সাধারণ: পুরো শব্দ ????? হয়ে যায়।

এমন অক্ষর আর ফেরানো যায় না, কারণ সব অক্ষর একই চিহ্নে পরিণত হয়েছে। Mojibuster অনুমান করে না, শুধু জানায় কতগুলো জায়গা ক্ষতিগ্রস্ত। সাহায্য মিলবে কেবল উৎস থেকে: আবার এক্সপোর্ট করুন বা ব্যাকআপ নিন।

??? কোথা থেকে আসে

  • MySQL: কলাম বা কানেকশন latin1-এ, কিন্তু ডেটা আসে UTF-8-এ। তখন MySQL বাংলা অক্ষরের জায়গায় ? বসায় – দেখুন MySQL ও phpMyAdmin।
  • PHP ওয়েবসাইট: ডেটাবেস কানেকশন utf8mb4 ছাড়া খোলা, যেমন PDO DSN-এ charset=utf8mb4 নেই। তখন ফর্ম থেকে আসা বাংলা ডেটাবেসে ???? হয়ে পৌঁছায়।
  • Excel: Save As-এ CSV UTF-8 (Comma delimited) বেছে নিন। সাধারণ CSV (Comma delimited) বাংলা রাখতে পারে না, প্রতিটি অক্ষর ? করে দেয় – দেখুন Excel ও CSV-তে বাংলা।
  • PowerShell 5.1: Export-Csv ডিফল্টভাবে ASCII লেখে এবং বাংলাকে ? করে দেয় – দেখুন PowerShell।
  • Python: encode('ascii', errors='replace') কিছু না জানিয়েই অক্ষরগুলো ? করে দেয় – দেখুন Python ও pandas।
  • Notepad, Save As → ANSI: ANSI-তে বাংলা অক্ষর নেই, তাই লেখা ? হয়ে সেভ হয়। সবসময় UTF-8 বেছে নিন।
  • Windows কনসোল: cmd যে অক্ষর চেনে না, সেগুলো ? দেখায়। সাধারণত শুধু দেখানো ভুল, ফাইল নয়।

আপনার ক্ষেত্র কোনটা?

  1. ফাইলটি এমন এডিটরে খুলুন যা এনকোডিং দেখায়, যেমন Notepad++। সেখানে বাংলা ঠিক দেখালে এটা প্রথম ক্ষেত্র।
  2. ফাইলটি Mojibuster-এ দিন। বাংলা অক্ষর ফিরে এলে ফাইল ঠিকই ছিল।
  3. Mojibuster হারানো অক্ষরের কথা জানালে এটা দ্বিতীয় ক্ষেত্র। তখন কেবল নতুন এক্সপোর্টই কাজে আসবে।

প্রশ্নবোধক চিহ্নের বদলে বাংলা-এর মতো চিহ্ন দেখলে সেটা অন্য ভুল, আর প্রায় সবসময় ঠিক করা যায়: ভাঙা বাংলা লেখা ঠিক করুন। লেখা evsjv-এর মতো ইংরেজি অক্ষরে দেখালে সেটা বিজয় ফন্টে টাইপ করা – বিজয় থেকে ইউনিকোড পাতায় রূপান্তর করুন। বিস্তারিত: মোজিবাকে কী।

সচরাচর জিজ্ঞাসা

Mojibuster কি ??? আবার বাংলা অক্ষরে ফেরাতে পারে?

না। একটি ? যেকোনো অক্ষরের জায়গায় হতে পারে, তথ্য হারিয়ে গেছে। Mojibuster এমন জায়গা ছোঁয় না, তবে জানায় কতগুলো আছে।

এক প্রোগ্রামে � দেখায়, অন্যটায় সব ঠিক – কেন?

তাহলে ফাইল ঠিক আছে, শুধু একটি প্রোগ্রাম ভুল এনকোডিংয়ে পড়ছে। Mojibuster দিয়ে ফাইলটি UTF-8-এ সংরক্ষণ করুন, তাহলে দুটো প্রোগ্রামই ঠিক দেখাবে।

� চিহ্নটি কী?

এটা replacement character U+FFFD। কোনো বাইট অক্ষর হিসেবে পড়তে না পারলে প্রোগ্রাম এটা বসায়। এটা এনকোডিং ভুলের সংকেত, লেখার অংশ নয়।

আরও গাইড