popo2po
05-24-2012, 12:23 PM
سلام
قبل از شروع از اینکه برای خیلی ها زیادی توضیح دادم پوزش، اما دوست ندارم کسی اشتباه کنه.
و بعد هم از اینکه انجمن امکان آپلود فایل رو نداد تا کد مورد نیاز رو آپلود کنم و راس و چپش به هم ریخته ...!
حتما برایتان پیش آمده که وقتی افزونه ای رو نصب می کنید، مخصوصا فرم ساز ها رو، پس از ورود اطلاعات و وقتی که می خواهید خروجی بگیرید و یا حتی قالب خود فرم در Front end سایت، نوشته های فارسی به صورت چندین ؟؟؟؟؟ نمایش داده می شوند.
در همین انجمن هم سوال هایی شده:
<b><font color=red>فقط کاربران عضو انجمن می توانند لینک ها را مشاهده کنند</font></b>
یا
<b><font color=red>فقط کاربران عضو انجمن می توانند لینک ها را مشاهده کنند</font></b>
البته راه حل این مشکل، همونطور که دوستان جواب دادن تغییر دستی charset و collation یا همون انکودینگ (ٍencoding) پایگاه داده هست.
بعلاوه، برای حل این مشکل راه سریع تر و بعلاوه ساده تری از تغییر دستی charset و collation پایگاه داده وجود دارد و اون هم اجرای یک دستور SQL هست. این دستور رو حداقل باید در PHPMyadmin و در پنل خودتون اجرا کنید اما فرقش اینه که با یک بار اجرای این دستور همه پایگاه داده شما به انکودینگ UTF8 و utf8_general_ci یا هر چیز دیگری که شما بخواهید تبدیل می شوند.
حالا این دستور رو از کجا بیاریم؟
این چیزیه که می خواهم توضیح بدم:
برای این کار لازمه یک فایل .php در یکی از فولدر های سرور ایجاد کنید و کد زیر رو بعد از انجام چند تغییر در اون قرار بدین و بعد از اجرای مسیر فایل کد برای شما ایجاد می شود. تنها کاری که باید انجام بدین کپی کردن اون کد در phpmyadmin و در تب SQL در پایگاه دادهتون هست.
در اجرای تنضیمات دقت کنید.
تنظیم نکردن نام پایگاه داده باعث تغییر انکودینگ همه پایگاه های داده میشه
که می تونه برای information_schema', 'mysql' مشکل ایجاد کنه.
کد:
<?php
//MySQL connection settings
$db_server = 'localhost';
$db_user="root";
$db_password="";
mysql_connect($db_server, $db_user, $db_password) or die(mysql_error());
//نام پایگاه داده خود را که می خواهید تغییر کند اینجا و در میان '' بنویسید. این جایی است که نباید فراموش کنید!
$dblist=array('');
//نام پایگاه داده ای که نباید دستکاری شود را اینجا قرار دهید. اگر بالایی را تنطیم کرده اید، نیازی به این نیست.
$skip_db_list = array('information_schema', 'mysql');
//Which charset to convert to?
$charset="utf8";
//Which collation to convert to?
$collation="utf8_general_ci";
//Only print queries without execution?
$printonly=true;
//Getting database names if they are not specified
$skip_db_text = '"'.implode('", "', $skip_db_list).'"';
if(count($dblist)<1) {
$sql="SELECT GROUP_CONCAT(`SCHEMA_NAME` SEPARATOR ',') AS FRST FROM `information_schema`.`SCHEMATA` WHERE `SCHEMA_NAME` NOT IN ($skip_db_text)";
$result = mysql_query($sql) or die(mysql_error());
$data = mysql_fetch_assoc ($result);
$dblist=explode(",", $data["FRST"]);
}
//Iterating databases
foreach ($dblist as $dbname) {
$sql="SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET $charset COLLATE $collation;') as FRST FROM `information_schema`.`TABLES` t WHERE t.`TABLE_SCHEMA` = '$dbname' ORDER BY 1";
$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($result)) {
echo $row["FRST"]."\r\n";
if(!$printonly) {
mysql_query($row["FRST"]) or die(mysql_error());
}
}
}
?>
قسمت های سبز را مطابق با پایگاه داده جوملای خود پر کنید.
در قسمت قرمز نام پایگاه داده جوملای خود را بگذارید. (نام database کل جوملا!)
قسمت بنقش را در صورتی که نمی خواهید قرمز را پر کنید تکمیل کنید
حال آدرس فایل را بر روی سرور در مرورگر خود وارد کنید. اگر همه چیز را درست انجام داده باشید، یک صفحه حاوی کد مورد نطر نمایش داده می شود.
همه کد موجود در صفحه را به عنوان دستور SQL در phpmyadmin وارد کنید.
شاد باشید و همیشه بخندید.
قبل از شروع از اینکه برای خیلی ها زیادی توضیح دادم پوزش، اما دوست ندارم کسی اشتباه کنه.
و بعد هم از اینکه انجمن امکان آپلود فایل رو نداد تا کد مورد نیاز رو آپلود کنم و راس و چپش به هم ریخته ...!
حتما برایتان پیش آمده که وقتی افزونه ای رو نصب می کنید، مخصوصا فرم ساز ها رو، پس از ورود اطلاعات و وقتی که می خواهید خروجی بگیرید و یا حتی قالب خود فرم در Front end سایت، نوشته های فارسی به صورت چندین ؟؟؟؟؟ نمایش داده می شوند.
در همین انجمن هم سوال هایی شده:
<b><font color=red>فقط کاربران عضو انجمن می توانند لینک ها را مشاهده کنند</font></b>
یا
<b><font color=red>فقط کاربران عضو انجمن می توانند لینک ها را مشاهده کنند</font></b>
البته راه حل این مشکل، همونطور که دوستان جواب دادن تغییر دستی charset و collation یا همون انکودینگ (ٍencoding) پایگاه داده هست.
بعلاوه، برای حل این مشکل راه سریع تر و بعلاوه ساده تری از تغییر دستی charset و collation پایگاه داده وجود دارد و اون هم اجرای یک دستور SQL هست. این دستور رو حداقل باید در PHPMyadmin و در پنل خودتون اجرا کنید اما فرقش اینه که با یک بار اجرای این دستور همه پایگاه داده شما به انکودینگ UTF8 و utf8_general_ci یا هر چیز دیگری که شما بخواهید تبدیل می شوند.
حالا این دستور رو از کجا بیاریم؟
این چیزیه که می خواهم توضیح بدم:
برای این کار لازمه یک فایل .php در یکی از فولدر های سرور ایجاد کنید و کد زیر رو بعد از انجام چند تغییر در اون قرار بدین و بعد از اجرای مسیر فایل کد برای شما ایجاد می شود. تنها کاری که باید انجام بدین کپی کردن اون کد در phpmyadmin و در تب SQL در پایگاه دادهتون هست.
در اجرای تنضیمات دقت کنید.
تنظیم نکردن نام پایگاه داده باعث تغییر انکودینگ همه پایگاه های داده میشه
که می تونه برای information_schema', 'mysql' مشکل ایجاد کنه.
کد:
<?php
//MySQL connection settings
$db_server = 'localhost';
$db_user="root";
$db_password="";
mysql_connect($db_server, $db_user, $db_password) or die(mysql_error());
//نام پایگاه داده خود را که می خواهید تغییر کند اینجا و در میان '' بنویسید. این جایی است که نباید فراموش کنید!
$dblist=array('');
//نام پایگاه داده ای که نباید دستکاری شود را اینجا قرار دهید. اگر بالایی را تنطیم کرده اید، نیازی به این نیست.
$skip_db_list = array('information_schema', 'mysql');
//Which charset to convert to?
$charset="utf8";
//Which collation to convert to?
$collation="utf8_general_ci";
//Only print queries without execution?
$printonly=true;
//Getting database names if they are not specified
$skip_db_text = '"'.implode('", "', $skip_db_list).'"';
if(count($dblist)<1) {
$sql="SELECT GROUP_CONCAT(`SCHEMA_NAME` SEPARATOR ',') AS FRST FROM `information_schema`.`SCHEMATA` WHERE `SCHEMA_NAME` NOT IN ($skip_db_text)";
$result = mysql_query($sql) or die(mysql_error());
$data = mysql_fetch_assoc ($result);
$dblist=explode(",", $data["FRST"]);
}
//Iterating databases
foreach ($dblist as $dbname) {
$sql="SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET $charset COLLATE $collation;') as FRST FROM `information_schema`.`TABLES` t WHERE t.`TABLE_SCHEMA` = '$dbname' ORDER BY 1";
$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($result)) {
echo $row["FRST"]."\r\n";
if(!$printonly) {
mysql_query($row["FRST"]) or die(mysql_error());
}
}
}
?>
قسمت های سبز را مطابق با پایگاه داده جوملای خود پر کنید.
در قسمت قرمز نام پایگاه داده جوملای خود را بگذارید. (نام database کل جوملا!)
قسمت بنقش را در صورتی که نمی خواهید قرمز را پر کنید تکمیل کنید
حال آدرس فایل را بر روی سرور در مرورگر خود وارد کنید. اگر همه چیز را درست انجام داده باشید، یک صفحه حاوی کد مورد نطر نمایش داده می شود.
همه کد موجود در صفحه را به عنوان دستور SQL در phpmyadmin وارد کنید.
شاد باشید و همیشه بخندید.