علامت سوال ؟؟؟؟؟ شدن نوشته های یک سایت

کارکترهای فارسی می بایست در همه جای وب بصورت UTF-8 اجرا شوند . چه در نوع ذخیره شدن فایلهای فارسی توسط Editor و چه در ذخیره ی اطلاعات در دیتابیس . در این نوشته قصد دارم راه حلهایی برای حالتی را پیشنهاد بدهم که مطالب موجود در دیتابیس بصورت علامت سوال است .

اگر یک سایتی یا کامپوننتی مثلا از جوملا ،  را تازه روی یک سرور نصب کنید و مشاهده کنید که نوشته ها بصورت علامت سوال در می آید معمولا مشکل از charset دیتابیس است ، برای سیستم های مدیریت محتوا مثل جوملا خیلی پیش آمده که بعد از نصب یک کامپوننت نوشته هایی که مربوط به آن کامپوننت می باشد بصورت علامت سوال در می آید.

البته ممکن است حدس شما در مورد utf-8 نبودن دیتابیس اشتباه باشد و قالب نوشته شده بصورت utf-8 ذخیره نشده باشد یا نوع ut-8 در ادیتورهایی که چند حالت برای utf-8 دارند بر روی utf-8 without BOM قرار ندارد و این باعث به هم ریختگی نوشته های پیش فرض قالب شده باشد . برای مشخص شدن منبع این اشکال کافیست وارد phpmyadmin بشوید و در دیتابیس دنبال نوشته های فارسی باشید ، اگر آنجا هم بصورت علامت سوال بود مشکل از دیتابیس است اما اگر در آنجا درست ذخیره شده بود باید نگاهی charset قالب بیندازید و در تگ HEAD سورس آن چک کنید که این عبارات موجود باشد :

<html xmlns="http://www.w3.org/1999/xhtml" dir="rtl" lang="fa-IR">

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

حال در ادامه این نوشته حالتی را در نظر می گیریم که اطلاعات مشاهده شده در دیتابیس مشکل دارند .

برای رفع کردن این مشکل ابتدا آن کامپوننت را حذف کنید بصورت کامل و در phpmyadmin دیتابیس را به unicode UTF-8 تغییر بدهید .

در phpmyadmin وارد دیتابیس مذکور شده و دربرگه Operations در قسمت Collation یک لیستی قرار دارد که می بایست روی utf8-unicode-ci قرار داشته باشد . اگر اینطور نیست آن را به این گزینه تغییر داده و Go را بزنید ، این کار باعث می شود که table هایی که بعد از این در این دیتابیس ایجاد می شوند ، دارای charset یونیکد utf8 بشوند ، table های قبلی اگر دارای charset های دیگر باشند تغییری در آنها انجام نخواهد شد .

حال می توانید هر کامپوننت ای که مشکل داشتید را نصب کنید و از تغییرات انجام شده تست بگیرید .

یا اگر کل نوشته های دیتابیس این مشکل را دارند و نمی توانید آن را دوباره با این شرایط تغییر داده شده نصب کنید ، باید در phpmyadmin بطور دستی table های موجود را edit کرده  و روی utf-8 قرار بدهید و ذخیره کنید .

ممکن است با وجود unicode بودن پیش فرض جداول دیتابیس باز هم این مشکل را داشته باشید ، می توانید با نصب چند سیستم مدیریت محتوا مثل وردپرس یا جوملا روی دیتابیسی که قبل از نصب از روش بالا آن را بصورت پیشفرض  unicode utf- کردید ،  تست کنید ، اگر سروری با جوملا و وردپرس مشکل نداشت و فقط یک اسکریپت خاص علامت سوال نمایش می داد و طبق صحبت های گفته شده table های آن هم unicode utf8  بود باید به نوع کانکشن اسکریپت با دیتابیس توجه کنید ، در جایی که دستورات اتصال با دیتابیس قرار داده می شوند توجه کنید که بعد از نوشتن عبارت اتصال :

$connection = mysql_connect(DB_SERVER,DB_USER,DB_PASS);

جمله ی زیر هم نوشته شود تا اتصال بصورت utf-8 برقرار شود .

mysql_set_charset('utf8',$connection);

همیشه توجه کنید که اگر سایت فارسی ای را برای هر اسکریپت یا CMS می خواهید راه اندازی کنید قبل از نصب و وارد شدن tabe ها بطور خودکار در هنگام نصب ، collation دیتابیس را بطور پیش فرض در مسیر گفته شده به unicode utf-8 تغییر دهید .

 


21 پاسخ به “علامت سوال ؟؟؟؟؟ شدن نوشته های یک سایت”

  1. nima گفت:

    سلام،ممنون بخاطر مطالب خوبتون،چند وقتی بود دنبال این آموزش بودم مشکلم را حل کرد با تشکر.

  2. ahmadreza گفت:

    سلام
    من توی هیچ سایتی نظر نمی زارم..
    ولی اینقدر این مطلب به کارم اومد که مجبور شدم نظرم رو بگم

    چاکرتونم……….عالی بود

  3. ahmad گفت:

    باسلام
    من در هدر سورس كه گفته بوديد رو گذاشتم ولي بازم با علامت سوال مواجه ميشم

    خواهش ميكنم بگيد مشكل از كجاست

    fela.ir/chat/profile

  4. ahmadreza گفت:

    با سلام خدمت شما
    من اون سورسی که گفتید رو گذاشتم ولی مشکل هنوز بر طرف نشده

    اینم آدرس

    http://fela.ir/chat/profile

    خواهش مندم کمکم کنید

  5. ahmadreza گفت:

    این سایت بهترین سایتی بود که تا حالا دیدم
    اما از نظر پاسخ گویی بسار ضعیف است

    خواهش می کنم_ هدف من از سایت زدن، فقط علاقه هستش پس یکی این مشکل رو بگه که چطوری حل میشه.

    10 تا صلوات بر پدر و مادر کسی که مشکلم رو حل کنه!!!!

    با تشکر

    • دوست عزیز شرمنده من خیلی وقتم در این چند روز آزاد نیست و خیلی نمیتونم به موقع جواب بدم .
      من سورس سایت شما را دیدم اول باید زبان فارسی را در قسمت lang انتخاب کنید . منظورم اینجاست :
      <html lang=”de” xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”de”>

      شما آلمانی را انتخاب کردید .
      دوما باید متا تگ چارست یونیکد رو بگذارید که نگذاشته اید . بصورت زیر :
      <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />
      از سایتتان معلومه که مشکل با دیتابیس ندارد و مشکل فایلها هستند پس حتما فایلهایتان را موقع ذخیره با utf-8 ذخیره کنید .
      از یک ادیتور خوب استفاده کنید من aptana را پیشنهاد میکنم
      موفق باشید .

       

  6. ahmadreza گفت:

    داش نعمتی

    نمی دونم کی هستی ولی معلومه که اوستایی
    پس بگو مشکل چیه

    • دوست عزیز شرمنده من خیلی وقتم در این چند روز آزاد نیست و خیلی نمیتونم به موقع جواب بدم .
      من سورس سایت شما را دیدم اول باید زبان فارسی را در قسمت lang انتخاب کنید . منظورم اینجاست :
      <html lang=”de” xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”de”>

      شما آلمانی را انتخاب کردید .
      دوما باید متا تگ چارست یونیکد رو بگذارید که نگذاشته اید . بصورت زیر :
      <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />
      از سایتتان معلومه که مشکل با دیتابیس ندارد و مشکل فایلها هستند پس حتما فایلهایتان را موقع ذخیره با utf-8 ذخیره کنید .
      از یک ادیتور خوب استفاده کنید من aptana را پیشنهاد میکنم
      موفق باشید .

       

  7. اكبري گفت:

    سلام من تا حالا دو سه تا اسكريپت رو هاستم نصب كردم اما حروف فارسي علامت سوال مي ياد فارسي رو رو سيستم دوباره نصب كردم حل نشد
    دستوراتي كه گفتيد رو مو به مو اجرا كردم اما مشكل حل نشد اينم آدرس
    http://m-akbary.com/
    ممنون ميشم مشكلم رو حل كنيد
    دعاتون مي كنم

  8. اكبري گفت:

    اين قالب تو index نيست. من همه indexa ro گشتم زبان رو تغيير دادم اما تغيير نمي كنه

  9. با سلام بنده یه اسکریپت اختصاصی دارم که وقتی روی لوکال هاست ویا روی هاست نصب میکنم حروف فارسی به صورت علامت سوال داخل مثلث دیده میشوند. تا حالا هم نتونستم راه حل درست و حسابی برای حل این مشکل پیدا کنم.
    راستی اگر مایل به تبادل لینک بودین لینک بنده با http://cartsharje.ir/ با عنوان خرید شارژ ایرانسل لینک کنید و بگید تا من هم لینکتون کنم.
    ممنون.

  10. فردین گفت:

    سلام دوست عزیز …. یه سوال داشتم

    یه قالب انگلیسی را خواستم فارسی کنم اما وقتی کلمه ای را فارسی میکنم
    اصلا علامت سوال هم نمی آید فقط یه فضای خالی میده بهم همین هیچی کلا… باید چه کار کنم ؟؟؟

  11. مریم گفت:

    سلام
    خدا خیر کثیر بهت بده مشکلم حل شد….
    عاقبت بخیر بشی….

  12. رضا گفت:

    ممنون عالی بود استفاده کردم مشکلم حل شد!

  13. شاهین گفت:

    ممنونم مشکلم حل شد
    فقط من ی دیتا بیس رو دارم ادیت میکنم که توی خود سایت فارسی نشون میده ولی توی خود پی اچ بی مای ادمین حرفو عجیب غریب زده!
    اونو چیکار کنیم؟

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *