WordPress ও ডেটাবেস এক্সপোর্ট: বাংলার জায়গায় ভাষা

মাইগ্রেশন, আপডেট বা ডেটাবেস এক্সপোর্টের পর আপনার পোস্টে হঠাৎ ভাষা-র জায়গায় ভাষা দেখাচ্ছে? ডেটা প্রায় সবসময় অক্ষতই থাকে, শুধু ভুল এনকোডিংয়ে পড়া হচ্ছে। Mojibuster এক্সপোর্ট ঠিক করে; তারপর আপনি ডেটাবেসে মূল কারণ সারান।

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

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

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

ঠিক করুন

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

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

সমস্যাটা দেখতে কেমন

সার্ভার বদলের পর SQL ডাম্পের একটি লাইন

আগে

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-এ ইমপোর্ট হয়েছে, বা উল্টোটা।
  • কোনো প্লাগইন বা ইমপোর্ট স্ক্রিপ্ট আগে থেকেই ভাঙা লেখাকে আরেকবার বদলে দিয়েছে। এতে দুইবার ভাঙা লেখা তৈরি হয়, যেমন à ¦­।

এক্সপোর্ট ঠিক করুন

  1. কিছু বদলানোর আগে ডেটাবেসের ব্যাকআপ নিন।
  2. প্রভাবিত টেবিল .sql ফাইলে এক্সপোর্ট করুন, যেমন phpMyAdmin দিয়ে বা mysqldump --default-character-set=utf8mb4 দিয়ে।
  3. ফাইলটি ওপরের বক্সে ফেলুন। Mojibuster শুধু ভাঙা জায়গা ঠিক করে এবং প্রতিটি পরিবর্তন দেখায়।
  4. ঠিক করা ফাইল ডাউনলোড করে utf8mb4 দিয়ে নতুন টেস্ট ডেটাবেসে ইমপোর্ট করুন।
  5. সাইট যাচাই করুন। সব ঠিক দেখালে আসল ডেটাবেসে ইমপোর্ট করুন।

ডাম্প কখনো আপলোড হয় না। এটা গুরুত্বপূর্ণ, কারণ তাতে প্রায়ই ইউজার অ্যাকাউন্ট, ইমেইল ঠিকানা ও মন্তব্য থাকে। এ বিষয়ে আরও আইনি তথ্য পাতায়।

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-তে আপনার নিজের অ্যাপ, সবখানে একই সমস্যা ও একই সমাধান।

আরও গাইড