সমস্যাটা দেখতে কেমন
আগে
INSERT INTO wp_posts (post_title) VALUES ('বাংলা à¦à¦¾à¦·à¦¾ ও নাম');পরে
INSERT INTO wp_posts (post_title) VALUES ('বাংলা ভাষা ও নাম');এটা কোথা থেকে আসে
WordPress লেখা UTF-8-এ রাখে। কিন্তু অনেক পুরোনো সাইটে টেবিল latin1-এ তৈরি হয়েছিল বা সংযোগ latin1 দিয়ে হতো। লেখা ও পড়ায় একই ভুল চললে কেউ টের পায় না। নতুন সার্ভারে গেলে, phpMyAdmin দিয়ে এক্সপোর্ট করলে বা সংযোগের charset বদলালে প্রতিটি বাংলা অক্ষর হঠাৎ কয়েকটি অদ্ভুত চিহ্নে বদলে যায়।
wp-config.php-এDB_CHARSETহলোlatin1বা টেবিলের সঙ্গে মেলে না।- ডাম্প
latin1-এ এক্সপোর্ট হয়েutf8mb4-এ ইমপোর্ট হয়েছে, বা উল্টোটা। - কোনো প্লাগইন বা ইমপোর্ট স্ক্রিপ্ট আগে থেকেই ভাঙা লেখাকে আরেকবার বদলে দিয়েছে। এতে দুইবার ভাঙা লেখা তৈরি হয়, যেমন
à ¦Â।
এক্সপোর্ট ঠিক করুন
- কিছু বদলানোর আগে ডেটাবেসের ব্যাকআপ নিন।
- প্রভাবিত টেবিল
.sqlফাইলে এক্সপোর্ট করুন, যেমন phpMyAdmin দিয়ে বাmysqldump --default-character-set=utf8mb4দিয়ে। - ফাইলটি ওপরের বক্সে ফেলুন। Mojibuster শুধু ভাঙা জায়গা ঠিক করে এবং প্রতিটি পরিবর্তন দেখায়।
- ঠিক করা ফাইল ডাউনলোড করে
utf8mb4দিয়ে নতুন টেস্ট ডেটাবেসে ইমপোর্ট করুন। - সাইট যাচাই করুন। সব ঠিক দেখালে আসল ডেটাবেসে ইমপোর্ট করুন।
ডাম্প কখনো আপলোড হয় না। এটা গুরুত্বপূর্ণ, কারণ তাতে প্রায়ই ইউজার অ্যাকাউন্ট, ইমেইল ঠিকানা ও মন্তব্য থাকে। এ বিষয়ে আরও আইনি তথ্য পাতায়।
serialized ডেটা নিয়ে সতর্ক থাকুন
WordPress কিছু সেটিং wp_options ও wp_postmeta-এ serialized PHP মান হিসেবে রাখে, যেমন s:12:"ভাষা";। সংখ্যাটি বাইটে দৈর্ঘ্য (বাংলা প্রতিটি অক্ষর ৩ বাইট নেয়)। লেখার দৈর্ঘ্য বদলে গেলে সংখ্যা আর মেলে না এবং WordPress মানটি বাদ দেয়। তাই আগে wp_posts, wp_comments ও wp_terms-এর মতো কনটেন্ট টেবিল ঠিক করুন। options-এর জন্য WP-CLI-এর wp search-replace ভালো, কারণ সে দৈর্ঘ্যও হালনাগাদ করে।
MySQL-এ মূল কারণ সারান
- টেবিল ও সংযোগ
utf8mb4-এ নিন এবংwp-config.php-এdefine('DB_CHARSET', 'utf8mb4');দিন। latin1কলামে UTF-8 বাইট থাকলে সরাসরি বদলাবেন না, নইলে লেখা দ্বিতীয়বার এনকোড হবে। সাধারণ পথ বাইনারি টাইপ হয়ে যায়: আগেMODIFY … LONGBLOB, তারপরMODIFY … LONGTEXT CHARACTER SET utf8mb4।- প্রতিটি পরিবর্তন আগে ডেটাবেসের কপিতে পরীক্ষা করুন।
সচরাচর জিজ্ঞাসা
পুরো WordPress ডেটাবেস একসঙ্গে ঠিক করা যায়?
হ্যাঁ, বড় SQL ডাম্পও। তবে wp_options ও wp_postmeta-এর serialized ডেটায় সতর্ক থাকুন; সেখানে WP-CLI ভালো।
ডাম্পের সঠিক অক্ষর কি বদলে যাবে?
না। Mojibuster শুধু স্পষ্টভাবে ভাঙা ক্রম ঠিক করে। সঠিক লেখা যেমন আছে তেমনই থাকে।
utf8 ও utf8mb4-এর পার্থক্য কী?
MySQL-এ utf8 মাত্র তিন বাইট পর্যন্ত অক্ষর রাখে, তাই ইমোজি হারিয়ে যায়। utf8mb4 আসল UTF-8 এবং WordPress-এর জন্য সঠিক পছন্দ।
WordPress ছাড়া অন্য সিস্টেমেও কাজ করে?
হ্যাঁ। Joomla, Drupal, Magento বা MySQL/MariaDB-তে আপনার নিজের অ্যাপ, সবখানে একই সমস্যা ও একই সমাধান।