View Full Version : حرفه ای: فارسی در پایگاه داده و نمایش آن در سایت
shekofeh
سه شنبه 22 تیر 1389, 23:52 عصر
سلام.این مشکل را چندبار درهمین سایت دیدم اما اساسی حل نشده است.
در پایگاه داده من (php myadmin) ابتدا Collation به صورت latin1_swedish_ci بود به صورتیکه نوشته های فارسی در پایگاه داده بد نمایش داده میشد.اما در سایت خوب بود.
به توصیه دوستان آمدم Collation را utf8_persian_ci قرار دادم و تمام نکات زیر را در برنامه ام رعایت کردم.الان در پایگاه داده خوب نمایش داده میشود اما در سایت به صورت ؟؟؟؟ نمایش داده میشود.
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET NAMES 'UTF8'");
mysql_query("SET character_set_connection = 'utf8'");
<META http-equiv=Content-Language content=fa>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
لطفا کمک کنید.مشکل ازکجاست؟
درضمن اومدم Collation را به حالت قبل برگرداندم تا مثل فبل شود اما دیگر تغییر نکرد و به صورت ؟؟؟ نمایش میدهد.داده ها را نیز پاک و دوباره وارد کردم اما فرقی نکرد!
funpatogh
چهارشنبه 23 تیر 1389, 00:50 صبح
عزیز وقتی شما را utf8_persian_ci میکنی داده های قبل رو نمیتونه درست کنه و داده های جدید که وارد کنی هم توی سایت درست نمایش میدهد هم توی phpmyadmin و اگر داده جدید وارد کنی و دوباره به
latin1_swedish_ci تغییر بدهی به مشکل بر میخوری
شما اگر utf8_persian_ci امجام بدهی فقط برای داده هایی که از این سری وارد کنی اعمال می شود نه برای داده های قبلی
shekofeh
چهارشنبه 23 تیر 1389, 10:36 صبح
عزیز وقتی شما را utf8_persian_ci میکنی داده های قبل رو نمیتونه درست کنه و داده های جدید که وارد کنی هم توی سایت درست نمایش میدهد هم توی phpmyadmin و اگر داده جدید وارد کنی و دوباره به
latin1_swedish_ci تغییر بدهی به مشکل بر میخوری
شما اگر utf8_persian_ci امجام بدهی فقط برای داده هایی که از این سری وارد کنی اعمال می شود نه برای داده های قبلی
من وقتی نوع Collation را utf8_persian_ci کردم داده ها را پاک و برای داده های جدید اعمال کردم اما تغییر نکرد.در پست قبلی هم گفتم .
مشکل از جای دیگه است.:گریه:
Reza1607
چهارشنبه 23 تیر 1389, 11:20 صبح
شما به جای استفاده از این کدها
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET NAMES 'UTF8'");
mysql_query("SET character_set_connection = 'utf8'");
تنها از این کد استفاده کنید ببینید مشکلتون حل میشه یا نه؟
mysql_query("SET NAMES 'utf8',$conn);
در ضمن شما زمانی که به بانک متصل میشید نتیجه رو داخل یک متغییر بریزید و از اون برای اجرای کوئری هاتون استفاده کنید
shekofeh
چهارشنبه 23 تیر 1389, 11:24 صبح
شما به جای استفاده از این کدها
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET NAMES 'UTF8'");
mysql_query("SET character_set_connection = 'utf8'");
تنها از این کد استفاده کنید ببینید مشکلتون حل میشه یا نه؟
mysql_query("SET NAMES 'utf8',$conn);
در ضمن شما زمانی که به بانک متصل میشید نتیجه رو داخل یک متغییر بریزید و از اون برای اجرای کوئری هاتون استفاده کنید
conn$ چی هست؟
shekofeh
چهارشنبه 23 تیر 1389, 11:29 صبح
<?php
$host="localhost";
$username="root";
$password="";
$database="electronic_library";
/*mysql_query("SET CHARACTER SET utf8");
mysql_query("SET NAMES 'UTF8'");
mysql_query("SET character_set_connection = 'utf8'");*/
mysql_connect($host,$username,$password) or die("Error:" . mysql_error());
mysql_select_db($database);
?>
قسمت */ را فعلا به صورت توضیح قرار دادم.کاربر 1607 reza این اتصالات به بانک من هست.همانطوری که شما میگویید هستش؟
Reza1607
چهارشنبه 23 تیر 1389, 11:30 صبح
conn$ چی هست؟
همون متغییری که وظیفه داره تا زمانی که به پایگاه داده وصل میشه کانکشن رو داخل خودش نگه داره یعنی کد زیر
$conn=mysql_connect('127.0.0.1','root','');
vafa
چهارشنبه 23 تیر 1389, 20:47 عصر
همچنین می تونید از توابع جدید mysqli استفاده کنید
$host ="localhost";
$user ="vafa";
$password ="pass";
$database ="mydb";
$mysqli =new mysqli($host,$user,$password,$database);
$mysqli ->query("SET NAMES 'utf8'");
$result =$mysqli->query($query);
امیـرحسین
چهارشنبه 23 تیر 1389, 22:08 عصر
من تو یه وبلاگ خارجی خوندم که باید Collation فیلد utf8 باشه مثلا utf8_general_ci و از کوئری زیر استفاده میشه که تست کردم و نتیجه گرفتم:
mysql_query("SET NAMES utf8");
که این SET NAME یه سری چیز دیگه رو هم utf8 می کنه. فقط دقت باید باشه اطلاعاتی که علامت سوال باشند از دست رفتند و اطلاعات جدید صحیح ذخیره و نمایش داده میشوند.
صابر طهماسبی
چهارشنبه 23 تیر 1389, 23:01 عصر
وقتی از Collation را utf8_persian_ci در php my admin استفاده می کنید باید در php تنظیمات encoding رو روی utf8 قرار بدید تا درست کار کنه :
mysql_set_charset('utf8',$link) or die(mysql_error());
موفق باشید.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.