حل مشکل نمایش حروف فارسی در وردپرس بدون دردسر
- مقالات آموزشی
- بروزرسانی شده در

اگه نوشتههای فارسی سایتتون بهشکل علامت سؤال یا حروف عجیبی مثل سلا٠دیده میشن، قبل از تغییر تنظیمات باید نوع خرابی رو تشخیص بدید. علامت سؤال میتونه نشونه ذخیره شدن اطلاعات خراب باشه، ولی حروف عجیب معمولاً وقتی دیده میشن که متن با یک کدگذاری ذخیره شده و با کدگذاری دیگهای خونده میشه. تغییر Collation بهتنهایی معمولاً هیچکدوم از این مشکلها رو حل نمیکنه.
در این آموزش، اول از دیتابیس بکاپ میگیریم. بعد تنظیمات وردپرس، اتصال دیتابیس، جدولها و ستونها رو بررسی میکنیم و فقط اگه شرایط مناسب بود، سراغ utf8mb4 میریم. یادتون نره که تغییر عجولانه Charset یا Collation ممکنه متنهای سالم رو هم خراب کنه.
- اگه متن داخل دیتابیس هم بهشکل علامت سؤاله: تبدیل Charset یا Collation حروف اصلی رو برنمیگردونه و بهتره سراغ بکاپ سالم برید.
- اگه متن داخل دیتابیس سالمه: اتصال دیتابیس، هدر صفحه، کش، قالب یا افزونه رو بررسی کنید.
- اگه حروفی مثل سلا٠میبینید: قبل از هر تبدیل گروهی، کدگذاری مبدأ رو روی یک نسخه کپی پیدا کنید.
- اگه بکاپ یا محیط آزمایشی ندارید: تغییر رو متوقف کنید و از پشتیبانی هاست یا متخصص دیتابیس کمک بگیرید.
آنچه در این مقاله میخوانید
قبل از هر کاری از دیتابیس بکاپ بگیرید
دیتابیس جاییه که نوشتهها، برگهها، تنظیمات و خیلی از اطلاعات مهم وردپرس داخلش نگهداری میشن. تغییر کدگذاری جدولها میتونه تعداد زیادی رکورد رو یکجا تغییر بده. پس بدون یک بکاپ سالم، هیچ تبدیلی انجام ندید. آموزش بکآپگیری از دیتابیس رو هم میتونید توی میهن وردپرس ببینید.
چرا تغییر کدگذاری دیتابیس بدون بکاپ خطرناکه
اگه کدگذاری اولیه داده رو اشتباه تشخیص بدید، تبدیل گروهی ممکنه حروف رو دوباره تبدیل کنه و خرابی تازهای بسازه. بعضی تغییرها هم روی همه ستونهای متنی یک جدول اثر میذارن. بکاپ به شما اجازه میده در صورت اشتباه، دیتابیس رو به وضعیت قبلی برگردونید.
چطور از دیتابیس وردپرس خروجی بگیرید
وارد پنل هاست بشید و phpMyAdmin رو باز کنید. دیتابیس سایتتون رو از ستون کناری انتخاب کنید، وارد بخش Export بشید و روش Quick و قالب SQL رو انتخاب کنید. بعد روی Export یا Go بزنید و فایل SQL رو در جای امنی ذخیره کنید. اسم گزینهها ممکنه با توجه به نسخه phpMyAdmin کمی فرق داشته باشه.
چطور مطمئن بشید فایل بکاپ قابل بازیابیه
فقط دانلود شدن فایل کافی نیست. حجم فایل نباید صفر باشه و داخلش باید دستورها و نام جدولهای دیتابیس دیده بشن. بهترین بررسی اینه که بکاپ رو روی یک دیتابیس آزمایشی وارد کنید و بالا اومدن نسخه آزمایشی سایت رو ببینید. اگه امکان این آزمایش رو ندارید، از پشتیبانی هاست بخواید قابلبازیابی بودن فایل رو بررسی کنه.
نوع بههمریختگی حروف فارسی رو تشخیص بدید
همه خرابیهای فارسی یک علت ندارن. قبل از دست زدن به دیتابیس، یک نوشته خراب رو داخل مدیریت وردپرس، صفحه سایت و خود دیتابیس مقایسه کنید.
نمایش متن فارسی بهشکل علامت سؤال
اگه عبارت «سلام» داخل ستون دیتابیس هم بهشکل «؟؟؟؟» ذخیره شده، احتمال داره بایتهای متن اصلی موقع ذخیره شدن از دست رفته باشن. تغییر Collation این علامت سؤالها رو دوباره به حروف فارسی تبدیل نمیکنه. برای بازیابی، معمولاً به یک بکاپ سالم یا منبع اصلی محتوا نیاز دارید.
نمایش حروف عجیب مثل سلاÙ
این حالت به Mojibake معروفه؛ یعنی بایتهای متن با کدگذاری اشتباهی تفسیر شدن. ممکنه اطلاعات اصلی هنوز قابل بازیابی باشن، ولی نباید قبل از پیدا کردن کدگذاری مبدأ، همه دادهها رو تبدیل کنید.
بههمریختگی فقط در بخشی از سایت یا یک جدول
اگه نوشتهها سالم هستن ولی اطلاعات یک افزونه خراب دیده میشن، احتمالاً مشکل به جدول همون افزونه، روش ذخیره اطلاعات یا خروجی اون مربوطه. اگه متن داخل مدیریت سالمه ولی در سایت خراب دیده میشه، قالب، هدر صفحه، کش یا پاسخ API هم باید بررسی بشه.
چرا حروف فارسی در وردپرس درست نمایش داده نمیشن
تفاوت ساده Charset و Collation
Charset یا مجموعه نویسه مشخص میکنه حروف چطور به بایت تبدیل و ذخیره بشن. Collation یا شیوه مقایسه مشخص میکنه دیتابیس متنها رو چطور مرتب و با هم مقایسه کنه. پس تغییر Collation بهتنهایی معمولاً متن خراب رو تعمیر نمیکنه.
ناهماهنگی کدگذاری وردپرس، دیتابیس و اتصال MySQL
وردپرس، اتصال PHP به MySQL یا MariaDB، جدول و ستون متنی باید برداشت هماهنگی از کدگذاری داشته باشن. اگه اتصال متن utf8mb4 رو با کدگذاری دیگهای بفرسته یا بخونه، خروجی ممکنه خراب بشه.
ذخیره شدن داده با کدگذاری اشتباه
ممکنه ظاهر جدول درست باشه، ولی داده قبلاً با روش اشتباهی داخل اون ذخیره شده باشه. در این وضعیت، تغییر مشخصات جدول لزوماً داده قدیمی رو درست نمیکنه و حتی ممکنه تشخیص مشکل رو سختتر کنه.
انتقال نادرست دیتابیس یا فایل پشتیبان
خروجی گرفتن، باز کردن فایل SQL در یک ویرایشگر نامناسب یا وارد کردن فایل با کدگذاری اشتباه میتونه حروف فارسی رو خراب کنه. این اتفاق در فایلهای CSV هم رایجه، چون برنامه واردکننده ممکنه کدگذاری فایل رو درست تشخیص نده.
تنظیمات کدگذاری وردپرس رو بررسی کنید
بررسی DB_CHARSET در فایل wp-config.php
فایل wp-config.php رو از File Manager هاست باز کنید و دنبال DB_CHARSET بگردید. در نصبهای امروزی وردپرس معمولاً این مقدار بهشکل زیر دیده میشه:
define( 'DB_CHARSET', 'utf8' );وجود مقدار utf8 در این فایل به این معنی نیست که باید فوراً اون رو عوض کنید. وردپرس هنگام برقراری اتصال، سازگاری دیتابیس و سرور رو بررسی میکنه و در محیطهای سازگار میتونه از utf8mb4 استفاده کنه؛ ولی این رفتار به نسخه وردپرس و نرمافزار دیتابیس بستگی داره و دادههای خراب قبلی رو خودکار تعمیر نمیکنه.
بررسی DB_COLLATE و دلیل خالی بودن معمول اون
مقدار DB_COLLATE معمولاً خالی میمونه تا وردپرس Collation سازگار رو انتخاب کنه:
define( 'DB_COLLATE', '' );خالی بودن این مقدار معمولاً ایراد نیست. تنظیم دستی یک Collation که سرور ازش پشتیبانی نمیکنه ممکنه اتصال یا ساخت جدول رو با خطا روبهرو کنه.
چرا نباید این مقدارها رو بدون شناخت دیتابیس تغییر بدید
طبق راهنمای تنظیمات وردپرس، تغییر DB_CHARSET و DB_COLLATE برای یک سایت موجود به شناخت وضعیت دیتابیس نیاز داره. تغییر این دو خط، ستونهای قبلی یا متنهای خراب رو خودکار تبدیل نمیکنه.
Charset و Collation دیتابیس رو در phpMyAdmin بررسی کنید
پیدا کردن دیتابیس درست سایت
در wp-config.php مقدار DB_NAME رو پیدا کنید. همین نام باید در ستون کناری phpMyAdmin انتخاب بشه. اگه چند سایت روی هاست دارید، این بررسی جلوی تغییر دیتابیس اشتباه رو میگیره.
نام کاربری و رمز دیتابیس هم در همین فایل دیده میشن، ولی اونها رو برای کسی ارسال نکنید. در بیشتر پنلهای هاست، phpMyAdmin بدون ورود دوباره باز میشه.

بررسی کدگذاری خود دیتابیس
بعد از انتخاب دیتابیس، بخش Operations رو باز کنید و Collation پیشفرض دیتابیس رو ببینید. این مقدار بیشتر روی جدولهای تازه اثر میذاره و بهتنهایی وضعیت همه جدولها و ستونهای موجود رو نشون نمیده. در این مرحله فقط مقدار رو یادداشت کنید و بدون بررسی جدولها چیزی رو تغییر ندید.

بررسی کدگذاری جدولها و ستونهای متنی
در صفحه Structure، ستون Collation جدولها رو مقایسه کنید. بعد وارد جدول مشکوک بشید و Structure رو بزنید تا Collation ستونهای متنی مثل varchar، text و longtext رو ببینید. ستونهای عددی Collation ندارن و این موضوع طبیعیه.
تشخیص جدول یا ستون ناسازگار
نام جدول، نام ستون، Charset، Collation و یک نمونه از متن خراب رو یادداشت کنید. اگه فقط یک جدول latin1 هست و بقیه جدولها utf8mb4 هستن، اون جدول مشکوکه؛ ولی هنوز نباید فرض کنید تبدیل مستقیمش حتماً داده رو درست میکنه.
چه زمانی utf8mb4 به حل مشکل نمایش حروف فارسی کمک میکنه
چه زمانی تبدیل دیتابیس به utf8mb4 کار درستیه
utf8mb4 همه نویسههای Unicode و کاراکترهایی مثل ایموجی رو پوشش میده و برای نصبهای امروزی وردپرس گزینه مناسبیه. تبدیل وقتی منطقیه که سرور از utf8mb4 پشتیبانی کنه، داده فعلی سالم باشه و هدف شما هماهنگ کردن ساختار جدولها باشه. اگه داده از قبل خراب ذخیره شده، اول باید روش بازیابی اون مشخص بشه. utf8mb4 علامت سؤالهای ذخیرهشده رو به حروف فارسی برنمیگردونه.
انتخاب Collation سازگار با وردپرس و سرور
یک Collation ثابت برای همه سرورها بهترین انتخاب نیست. گزینه مناسب به نسخه MySQL یا MariaDB و سازگاری وردپرس با سرور بستگی داره. برای همین بهتره Collation جدولهای اصلی سالم سایت و پیشنهاد پشتیبانی هاست رو مبنا قرار بدید و DB_COLLATE رو بیدلیل پر نکنید.
تبدیل امن جدولها و ستونهای متنی
اول نسخه کپی سایت رو بسازید. بعد فقط یک جدول غیرحساس یا یک کپی از جدول مشکوک رو تبدیل کنید و متن فارسی، جستوجو، مرتبسازی و اطلاعات افزونه مربوطه رو بررسی کنید. تبدیل Charset میتونه روی فضای موردنیاز ستونها و محدودیت ایندکسها اثر بذاره؛ پس برای دیتابیس بزرگ یا فروشگاهی بهتره این کار رو به متخصص دیتابیس بسپارید.
پاک کردن کش و بررسی دوباره سایت
بعد از تغییر موفق، کش افزونه، کش سرور و کش مرورگر رو پاک کنید. یک نوشته قدیمی، یک نوشته تازه، عنوانها، دیدگاهها و اطلاعات افزونهها رو بررسی کنید. سالم بودن صفحه اصلی بهتنهایی برای تأیید نتیجه کافی نیست.
علامت سؤالهای ذخیرهشده در دیتابیس رو چطور بررسی کنید
تشخیص اینکه متن اصلی از دست رفته یا فقط اشتباه نمایش داده میشه
رکورد خراب رو با Browse در phpMyAdmin ببینید. اگه خود مقدار ذخیرهشده علامت سؤالهای واقعی داره، دیتابیس دیگه حروف اولیه رو در اختیار نداره. اگه مقدار داخل دیتابیس سالمه ولی صفحه علامت سؤال نشون میده، مشکل احتمالاً در اتصال، خروجی برنامه، هدر یا کشه.
بازیابی اطلاعات سالم از بکاپ
یک بکاپ مربوط به قبل از شروع مشکل رو روی محیط آزمایشی بازیابی کنید. اگه متن اونجا سالمه، فقط دادههای لازم رو با روش کنترلشده به سایت اصلی برگردونید. بازگردانی کامل دیتابیس میتونه سفارشها، دیدگاهها یا تغییرات جدید رو پاک کنه؛ پس قبل از اون از وضعیت فعلی هم بکاپ بگیرید. اگه با ساخت محیط آزمایشی آشنا نیستید، از پشتیبانی هاست بخواید بازیابی رو روی یک دیتابیس جدا انجام بده.
جلوگیری از تبدیل گروهی قبل از تشخیص کدگذاری اصلی
دستورهای تبدیل گروهی که بدون شناخت کدگذاری مبدأ اجرا میشن، ممکنه همه جدولها رو تغییر بدن. اول روی یک کپی و یک رکورد نمونه آزمایش کنید. اگه نتیجه قابل پیشبینی نیست، ادامه ندید.
حروف عجیب مثل سلا٠رو چطور برطرف کنید
پیدا کردن کدگذاری اصلی داده
اول مشخص کنید متن از کجا اومده: فرم سایت، فایل CSV، خروجی SQL، API یا انتقال دستی. بعد کدگذاری فایل و تنظیم اتصال زمان ورود اطلاعات رو بررسی کنید. شکل ظاهری متن سرنخ خوبی میده، ولی برای تبدیل کل دیتابیس کافی نیست.
آزمایش تبدیل روی نسخه کپی یا یک رکورد نمونه
از جدول یک کپی بسازید و تبدیل احتمالی رو فقط روی یک رکورد انجام بدید. نتیجه باید دقیقاً با متن اصلی مورد انتظار برابر باشه. چند نوع محتوا، عدد، نشانه نگارشی و ایموجی رو هم بررسی کنید تا تبدیل ظاهراً درست، بخش دیگهای رو خراب نکرده باشه.
اصلاح دادهها بدون خراب کردن متنهای سالم
ممکنه یک ستون همزمان متن سالم و خراب داشته باشه. در این حالت تبدیل کل ستون انتخاب امنی نیست. رکوردهای خراب رو جدا کنید و بعد از تأیید نسخه آزمایشی، فقط همون رکوردها رو اصلاح کنید. برای حجم زیاد داده، از متخصص بخواید اسکریپت تبدیل رو همراه با گزارش و امکان بازگشت آماده کنه.
اگه مشکل فقط در یک افزونه، قالب یا فایل دیده میشه
بررسی خروجی افزونه یا قالب
قالب رو موقتاً روی یک قالب پیشفرض وردپرس بذارید یا افزونه مشکوک رو در محیط آزمایشی غیرفعال کنید. اگه مشکل ناپدید شد، جدولهای افزونه، روش دریافت داده و فایلهای خروجی اون باید بررسی بشن. این آزمایش رو روی سایت شلوغ بدون برنامه انجام ندید.
بررسی کدگذاری فایلهای CSV و SQL
فایل رو با ویرایشگری باز کنید که کدگذاری رو نشون میده و قبل از ذخیره دوباره، UTF-8 رو انتخاب کنید. موقع ورود CSV هم گزینه Encoding یا Character Set رو روی کدگذاری واقعی فایل بذارید. ذخیره کردن دوباره یک فایل خراب، اطلاعات اولیه رو برنمیگردونه.
بررسی هدر Content-Type و پاسخهای API
اگه اطلاعات از API میاد، پاسخ باید کدگذاری درست رو اعلام کنه؛ معمولاً UTF-8. در ابزار توسعه مرورگر، بخش Network رو باز کنید و خود پاسخ رو ببینید. اگه پاسخ سالمه ولی صفحه خراب نشونش میده، کد قالب یا JavaScript باید بررسی بشه.
چه زمانی Mbstring ارزش بررسی داره
Mbstring یک افزونه PHP برای پردازش رشتههای چندبایتیه. اگه افزونه یا قالب مشخصی به اون نیاز داره یا لاگ خطا نبودنش رو گزارش میکنه، از پشتیبانی هاست بخواید فعالش کنه. فعال کردن Mbstring بهتنهایی دادهای رو که اشتباه ذخیره شده تعمیر نمیکنه.
اگه مشکل هنوز حل نشده، این موارد رو بررسی کنید
- اتصال وردپرس به دیتابیس درست: مقدارهای DB_NAME، DB_HOST و پیشوند جدولها رو با دیتابیس فعال مقایسه کنید.
- نسخه سالم بکاپ و روش ورود اطلاعات: زمان شروع مشکل و آخرین بکاپ سالم رو پیدا کنید و فایل واردشده رو هم بررسی کنید.
- تنظیمات MySQL یا MariaDB روی هاست: Charset اتصال، پشتیبانی از utf8mb4 و Collationهای قابل استفاده باید بررسی بشن.
- لاگ خطاهای وردپرس و PHP: خطاهای مربوط به دیتابیس، تبدیل رشته، افزونه یا Mbstring میتونن مسیر بررسی رو مشخص کنن.
- کمک گرفتن از پشتیبانی هاست یا متخصص دیتابیس: نمونه متن خراب، نام جدول، زمان شروع مشکل و بکاپها رو در اختیارشون بذارید؛ ولی رمزهای سایت رو در پیام عادی ارسال نکنید.
چطور از تکرار مشکل حروف فارسی جلوگیری کنید
- از utf8mb4 بهشکل هماهنگ استفاده کنید: اتصال، جدولها و ستونهای تازه باید با تنظیمات وردپرس و سرور هماهنگ باشن.
- قبل از انتقال یا تبدیل دیتابیس بکاپ بگیرید: بکاپ رو نگه دارید و امکان بازیابی اون رو آزمایش کنید.
- کدگذاری فایلها رو مشخص کنید: موقع ورود و خروج CSV یا SQL، Encoding واقعی فایل رو بررسی کنید.
- تغییرها رو روی سایت آزمایشی انجام بدید: بعد از آزمایش نوشتهها، فرمها، جستوجو و اطلاعات افزونهها، تغییر تأییدشده رو روی سایت اصلی اجرا کنید.
سؤالهای متداول
آیا تغییر Collation بهتنهایی حروف فارسی رو درست میکنه؟
معمولاً نه. Collation بیشتر روش مقایسه و مرتبسازی متن رو مشخص میکنه. اگه داده با Charset اشتباه ذخیره یا تفسیر شده باشه، اول باید کدگذاری اصلی رو تشخیص بدید.
آیا علامت سؤال شدن متن یعنی اطلاعات از بین رفته؟
اگه علامت سؤالهای واقعی داخل دیتابیس ذخیره شده باشن، ممکنه حروف اصلی از دست رفته باشن و به بکاپ سالم نیاز داشته باشید. ولی اگه متن داخل دیتابیس سالمه، احتمالاً مشکل فقط در نمایش یا اتصال دیتابیسه.
بهترین Charset برای وردپرس چیه؟
برای نصبهای امروزی وردپرس، utf8mb4 معمولاً انتخاب مناسبیه چون همه نویسههای Unicode و ایموجیها رو پوشش میده. قبل از تبدیل دیتابیس قدیمی، سازگاری سرور و سلامت دادهها رو بررسی کنید.
آیا باید DB_COLLATE رو در wp-config.php تغییر بدیم؟
در بیشتر سایتها بهتره DB_COLLATE خالی بمونه تا وردپرس مقدار سازگار رو انتخاب کنه. تغییر دستی اون بدون بررسی دیتابیس و سرور ممکنه مشکل تازهای بسازه.
آیا نصب Mbstring مشکل حروف فارسی رو حل میکنه؟
نه، Mbstring بهتنهایی داده خراب رو تعمیر نمیکنه. فقط وقتی ارزش بررسی داره که یک افزونه یا قالب به اون نیاز داشته باشه یا لاگ خطا نبودنش رو نشون بده.
جمعبندی
در نهایت، برای حل مشکل نمایش حروف فارسی در وردپرس عجله نکنید و قبل از هر تغییری یک بکاپ سالم بگیرید. اول ببینید متن داخل خود دیتابیس خرابه یا فقط اشتباه نمایش داده میشه، بعد تنظیمات وردپرس، اتصال دیتابیس و کدگذاری جدولها رو بررسی کنید. اگه حروف اصلی با علامت سؤال جایگزین شده باشن، معمولاً باید سراغ بکاپ برید؛ ولی اگه متن بهشکل حروف عجیب دیده میشه، ممکنه با تشخیص کدگذاری مبدأ و آزمایش روی نسخه کپی قابل بازیابی باشه. مهمتر از همه، هیچ تبدیل گروهی رو بدون آزمایش روی سایت آزمایشی انجام ندید.

سلام من مشکل کمرنگ شدن بعضی از حروف در وردپرس رو دارم مثلا حرف ب اگر رنگ متن قرمز باشه قرمزش کمرنگ تر از دیگر کلمات هست چطور میشه درستش کرد؟
درود، این مشکل معمولا از فونت یا نحوه رندر شدن آن در مرورگر است. ابتدا فونت دیگری را امتحان کنید و کش سایت و مرورگر رو پاک کنید
ما یه افزونه ای داریم برای محاسبه قیمت محصول استفاده میکنیم وقتی مرورگر کاربر فارسی هست عدد محاسبه شده در سبد خرید و صورتحساب نمایش داده نمیشه! فقط کافیه زبان مرورگر رو انگلیسی کنیم و صفحه رو رفرش کنیم عداد غیب شده برمیگرده!
تاحالا با همچین مشکلی برخورد داشتید؟ راه حلی داره؟
سلام توی کدها چک کنید که اگه اعداد فارسی هستند به انگلیسی برگردانده بشن
کدها فارسی نیست
میدونم ولی تو مرورگر فارسی اعداد فارسی میشه. پس باید تبدیل کننده اعداد فارسی به انگلیسی تو کدها بذارید.
درود
سال نو مبارک
خدمت شما عرض کنم سایت ما تازه تاسیس و ایندکس شده
فقط نمیدونم چرا حتما باید انگلیسی تایپ کنیم تا در صفحه گوگل نمایش داده بشه
چرا با معادل فارسی نمایش داده نمیشه ؟؟؟؟؟
سلام
کالیشن UTF8_percian_ci بهتر است یا کالیشن UTF-8 General CI چرا؟
آیا با تنظیم کالیشن، کارکتر های فارسی نامک در سورس صفحه، فارسی نمایش داده میشه یا بهم ریخته
چون جایی خوندم که اگه به هم ریخته بشه در سرعت تاثیر داره خصوصا در در صفحه اصلی، و این کد را گذاشته بود ولی مشکلی ایجاد کرد مجبور شدم کد را بردارم
جلوگیری از اینکد کردن لینک های فارسی
function urldecode_site( $url ) {
if (!is_admin()) {
$url = str_replace(get_home_url(),”,$url);
$url = urldecode($url);
return $url;
}
}
add_filter( ‘post_link’, ‘urldecode_site’, 10, 3 );
add_filter( ‘post_type_link’, ‘urldecode_site’, 10, 3 );
add_filter( ‘page_link’, ‘urldecode_site’, 10, 3 );