MySQL-এ এনকোডিং তিন জায়গায় ঠিক হয়
- কলাম বা টেবিল: ডেটা কোন character set-এ রাখা হয়, যেমন
utf8mb4বাlatin1। - কানেকশন: ক্লায়েন্ট ও সার্ভার কোন character set-এ কথা বলে –
SET NAMES utf8mb4দিয়ে বা কানেকশন সেটিংসে ঠিক হয়। - ফাইল: ইমপোর্ট পড়া বা এক্সপোর্ট লেখার এনকোডিং – phpMyAdmin-এ Character set of the file-এ পাবেন।
তিনটি না মিললে অক্ষর ভেঙে যায়। সবচেয়ে সাধারণ ঘটনা: UTF-8-এ লেখা বাংলা latin1 কানেকশন দিয়ে latin1 কলামে গেছে। অ্যাপে সব ঠিক দেখায়, কিন্তু phpMyAdmin ও এক্সপোর্টে বাংলা দেখায়।
আগে
Avwg evsjvq Mvb MvB Avgvi ‡mvbvi evsjv
পরে
আমি বাংলায় গান গাই আমার সোনার বাংলা
Character set দেখে নিন
SHOW VARIABLES LIKE 'character_set%';সার্ভার ও কানেকশনের সেটিংস দেখায়।SHOW CREATE TABLE customers;টেবিল ও তার কলামের character set দেখায়।SELECT name, HEX(name) FROM customers LIMIT 5;আসল বাইট দেখায়:utf8mb4কলামেE0A6ACঠিকব, আরC3A0C2A6C2ACআগেই ভাঙাব।
এক্সপোর্ট বা ডাম্প ঠিক করুন
- phpMyAdmin-এ টেবিলটি SQL বা CSV হিসেবে এক্সপোর্ট করুন – অথবা
mysqldump --default-character-set=utf8mb4দিয়ে। - ফাইলটি ওপরের বাক্সে ফেলুন। Mojibuster শুধু ভাঙা জায়গাগুলো ঠিক করে; ঠিক অক্ষর যেমন ছিল তেমনই থাকে।
- কী বদলেছে?-তে ঠিক করা জায়গাগুলো দেখুন এবং ফাইল ডাউনলোড করুন।
utf8mb4টেবিলে ইমপোর্ট করুন এবং ইমপোর্ট ডায়ালগে character set হিসেবেutf-8বেছে নিন।- আসল টেবিল বদলানোর আগে কপিতে পরীক্ষা করে নিন।
এক্সপোর্ট আপনার কম্পিউটারের বাইরে যায় না – গ্রাহকের তথ্যের জন্য এটি জরুরি। Excel-এ খুলতে সমস্যা হলে Excel ও CSV-তে বাংলা ফন্টের সমস্যা পাতা দেখুন।
আসল কারণ ঠিক করুন
- নতুন টেবিল বানান
DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ciদিয়ে। - অ্যাপের কানেকশন
utf8mb4-এ রাখুন, PHP-তে যেমন PDO DSN-এcharset=utf8mb4। latin1কলামে UTF-8 বাইট থাকলে সরাসরিCONVERT TOকরবেন না – তাতে সেগুলো দ্বিতীয়বার এনকোড হয়। নিরাপদ পথ বাইনারি টাইপ দিয়ে: আগেMODIFY name VARBINARY(255), তারপরMODIFY name VARCHAR(255) CHARACTER SET utf8mb4।- MySQL অক্ষরের জায়গায়
?বসালে কলাম বা কানেকশন সেগুলো ধরতেই পারে না। এভাবে যা সেভ হয়ে গেছে তা হারিয়ে গেছে – মোজিবাকে কী পাতায় পড়ুন।
সচরাচর জিজ্ঞাসা
অ্যাপে সব ঠিক দেখায়, phpMyAdmin-এ কেন নয়?
কারণ অ্যাপ ও ডেটাবেস একই ভুল দুবার করে: অ্যাপ UTF-8 latin1 কানেকশনে লেখে এবং একইভাবে পড়ে। phpMyAdmin ঠিক কানেকশনে যুক্ত হয়, তাই আসলে যা সেভ আছে তা-ই দেখায়। WordPress চালালে WordPress ও ডেটাবেস এবং দুইবার ভাঙা লেখা পাতাও দেখুন।
কোন collation বেছে নেব?
বেশিরভাগ অ্যাপের জন্য utf8mb4_unicode_ci চলে; MySQL 8 থেকে utf8mb4_0900_ai_ci ডিফল্ট। collation-এর চেয়ে character set utf8mb4 বেশি জরুরি – utf8 নয়, যা MySQL-এ ইমোজি রাখতে পারে না।
MariaDB-তেও কি কাজ করে?
হ্যাঁ। MariaDB character set MySQL-এর মতোই সামলায়, কমান্ডও একই।
ডাম্প কত বড় হতে পারে?
প্রতিটি ফাইল 100 MB পর্যন্ত। বড় ডেটাবেস টেবিল ধরে ধরে এক্সপোর্ট করুন।