PDA

View Full Version : حرفه ای: فارسی در پایگاه داده و نمایش آن در سایت



shekofeh
سه شنبه 22 تیر 1389, 22: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
سه شنبه 22 تیر 1389, 23:50 عصر
عزیز وقتی شما را utf8_persian_ci میکنی داده های قبل رو نمیتونه درست کنه و داده های جدید که وارد کنی هم توی سایت درست نمایش میدهد هم توی phpmyadmin و اگر داده جدید وارد کنی و دوباره به
latin1_swedish_ci تغییر بدهی به مشکل بر میخوری
شما اگر utf8_persian_ci امجام بدهی فقط برای داده هایی که از این سری وارد کنی اعمال می شود نه برای داده های قبلی

shekofeh
چهارشنبه 23 تیر 1389, 09:36 صبح
عزیز وقتی شما را utf8_persian_ci میکنی داده های قبل رو نمیتونه درست کنه و داده های جدید که وارد کنی هم توی سایت درست نمایش میدهد هم توی phpmyadmin و اگر داده جدید وارد کنی و دوباره به
latin1_swedish_ci تغییر بدهی به مشکل بر میخوری
شما اگر utf8_persian_ci امجام بدهی فقط برای داده هایی که از این سری وارد کنی اعمال می شود نه برای داده های قبلی

من وقتی نوع Collation را utf8_persian_ci کردم داده ها را پاک و برای داده های جدید اعمال کردم اما تغییر نکرد.در پست قبلی هم گفتم .
مشکل از جای دیگه است.:گریه:

Reza1607
چهارشنبه 23 تیر 1389, 10: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, 10: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, 10: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, 10:30 صبح
conn$ چی هست؟

همون متغییری که وظیفه داره تا زمانی که به پایگاه داده وصل میشه کانکشن رو داخل خودش نگه داره یعنی کد زیر


$conn=mysql_connect('127.0.0.1','root','');

vafa
چهارشنبه 23 تیر 1389, 19: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, 21:08 عصر
من تو یه وبلاگ خارجی خوندم که باید Collation فیلد utf8 باشه مثلا utf8_general_ci و از کوئری زیر استفاده میشه که تست کردم و نتیجه گرفتم:
mysql_query("SET NAMES utf8");
که این SET NAME یه سری چیز دیگه رو هم utf8 می کنه. فقط دقت باید باشه اطلاعاتی که علامت سوال باشند از دست رفتند و اطلاعات جدید صحیح ذخیره و نمایش داده میشوند.

صابر طهماسبی
چهارشنبه 23 تیر 1389, 22:01 عصر
وقتی از Collation را utf8_persian_ci در php my admin استفاده می کنید باید در php تنظیمات encoding رو روی utf8 قرار بدید تا درست کار کنه :


mysql_set_charset('utf8',$link) or die(mysql_error());

موفق باشید.