رفتن به مطلب
kavpar

نحوه حل مشکل نمایش علامت سوال در قسمت ثبت نام cb

پست های پیشنهاد شده

سلام  با بالا رفتن ورژن php سرور سایتم  قسمت ورود کاربران و قسمت ثبت نام cbبه صورت علامت سوال در اومده

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

اگر یک سایتی یا کامپوننتی مثلا از جوملا ،  را تازه روی یک سرور نصب کنید و مشاهده کنید که نوشته ها بصورت علامت سوال در می آید معمولا مشکل از charset دیتابیس است ، برای سیستم های مدیریت محتوا مثل جوملا خیلی پیش آمده که بعد از نصب یک کامپوننت نوشته هایی که مربوط به آن کامپوننت می باشد بصورت علامت سوال در می آید.post-34556-0-94999700-1377358656_thumb.j

 

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

1
2
3
<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  بود باید به نوع کانکشن اسکریپت با دیتابیس توجه کنید ، در جایی که دستورات اتصال با دیتابیس قرار داده می شوند توجه کنید که بعد از نوشتن عبارت اتصال :

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

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

1
mysql_set_charset('utf8',$connection);

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

 

و اما یک روش دیگه

 


<?php
// your connection
mysql_connect("localhost","user","password");
mysql_select_db("detabase");
 
// convert code
$res = mysql_query("SHOW TABLES");
while ($row = mysql_fetch_array($res))
{
    foreach ($row as $key => $table)
    {
        mysql_query("ALTER TABLE " . $table . " CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci");
        echo $key . " => " . $table . " CONVERTED<br />";
    }
}
?>
 

user= اسم یوزر دیتابیس

password= رمز عبور

و اسم دیتابیس  خود رو در فایل جایگزین کنید 

را داخل یک ادیتور متن مثلا notepad مینویسیم و با اسم دل خواه و پسوند php ذخیره میکنیم و داخل هاست آپلود میکنیم 

 

اگه دوستان راه حل دیگری برای این مشکل دارن یا آموزش های بالا ناقص است یا اگه کامپوننتی برای ثبت نام جوملا 2.5 سراغ دارن لطفا دریغ نفرمایید :wub:

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید ارسال داشته باشید و بعد ثبت نام خود را در سایت کامل نمایید. اگر حساب کاربری در سایت دارید، جهت ارسال با حساب کاربری خود هم اکنون وارد سایت شوید

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • افزودن...