idocsidocs
پنج شنبه 20 آبان 1389, 16:59 عصر
سلام
من برای ذخیره کردن مقادیر فارسی توی پایگاه داده موارد زیر رو رعایت می کنم ولی باز هم مقادیر فارسی بخوبی توی پایگاه داده ذخیره نمی شن:
من از XAMPP استفاده می کنم.
تگ متا رو توی همه صفحات بکار می برم.
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
همه صفحات و اسکریپتها رو با فرمت UTF-8 ذخیره می کنم. و برای اینکه موقع کارکردن با توابع هدر با مشکل مواجه نشم به کمک نرم افزار ++notepad فرمت همه صفحات و اسکریپتها رو بصورت
Encode in UTF-8 Without BOM تعریف می کنم.
بعد از تماس با پایگاه داده از کوئری زیر استفاده می کنم:
$q = "SET NAMES 'utf8'";
mysqli_query($con, $q);
و بالاخره اینکه برای دیتابیس، جدولها و ستونها کلکشن رو بصورت utf8_unicode_ci تعریف می کنم. کلکشنهای زیر رو هم امتحان کردم ولی نتیجه ای نداشت.
utf8_general_ci
utf8_persian_ci
با تمام این کارها بعضی وقتها، بعد از اینکه مقادیر فارسی رو از پایگاه داده بازیابی می کنم و روی صفحه نمایش می دم، مقادیر به شکل ناخوانا توی صفحه نمایش داده می شن.
هر کاری که فکر می کردم انجام دادم ولی مشکل حل نشد. اگه چیزی به ذهن می رسه لطفا راهنماییم کنید؟
اسکریپتهایی که استفاده می کنم رو در ادامه نوشتم:
پس از زدن دکمه درج پيام، داده هاي پيام به اسکريپت زیر داده مي شن
<?php
ob_start();
session_start();
$_POST[userid] = $_SESSION[userid];
include('dbinfo.inc');
$cxn = mysqli_connect($host,$user,$password, $database)
or die ("امکان تماس با سرور وجود ندارد");
$q = "SET NAMES 'utf8'";
mysqli_query($cxn, $q);
$sql = "INSERT INTO message ($fields) VALUES (\"$values\")";
$result = mysqli_query($cxn,$sql)
or die("امکان انجام درخواست وجود ندارد: ".mysqli_error($cxn));
$_POST['sent_message'] = "";
$_POST['sent_title'] = "";
$_POST['php_message'] = 'پيام شما ثبت شد، اکنون مي توانيد يک پيام ديگر وارد کنيد';
extract($_POST);
include('user.php');
exit();
}
}
?>
اين کد حاوي فرم دريافت اطلاعات هست
<?php ob_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
session_start();
include('dbinfo.inc');
$cxn = mysqli_connect($host,$user,$password,$database)
or die ("امکان تماس با سرور وجود ندارد");
$sql = "select * from register where (userid ='$_SESSION[userid]')";
$result = mysqli_query($cxn,$sql)
or die("امکان انجام درخواست وجود ندارد: ".mysqli_error($cxn));
$sname = mysqli_fetch_row($result);
?>
<title><?php echo 'سلام'." "."$sname[10]"; ?></title>
</head>
<body>
<div id="center">
<form id="form1" name="form1" method="post" action="Message.php">
<table id="t" width="440" border="0" class="news"><?php
$php_message = $_POST['php_message'];
$sent_title = $_POST['sent_title'];
$sent_message = $_POST['sent_message'];
?>
<tr>
<td width="364" align="right">ارسال پيام
</td>
<td width="66" align="left"></td>
</tr>
<tr>
<td align="right"></td>
<td align="right"> </td>
</tr>
<tr>
<td align="right"><p class="red"><?php echo "$php_message" ?></p></td>
<td align="left"> </td>
</tr>
<tr>
<td align="right"><input name="sent_title" type="text" id="sent_title" value="<?php echo "$sent_title" ?>" size="40" maxlength="100" /></td>
<td align="left">عنوان پيام</td>
</tr>
<tr>
<td align="right"><label>
<textarea name="sent_message" id="sent_message" cols="40" rows="5"><?php echo "$sent_message" ?></textarea>
</label></td>
<td align="left">متن پيام</td>
</tr>
<tr>
<td align="right"><label>
<input type="submit" value="درج پيام" />
</label></td>
<td align="left"><input name="submit" type="hidden" id="submit_sent_message" value="yes" /></td>
</tr>
</table>
</form>
</body>
</html>
من برای ذخیره کردن مقادیر فارسی توی پایگاه داده موارد زیر رو رعایت می کنم ولی باز هم مقادیر فارسی بخوبی توی پایگاه داده ذخیره نمی شن:
من از XAMPP استفاده می کنم.
تگ متا رو توی همه صفحات بکار می برم.
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
همه صفحات و اسکریپتها رو با فرمت UTF-8 ذخیره می کنم. و برای اینکه موقع کارکردن با توابع هدر با مشکل مواجه نشم به کمک نرم افزار ++notepad فرمت همه صفحات و اسکریپتها رو بصورت
Encode in UTF-8 Without BOM تعریف می کنم.
بعد از تماس با پایگاه داده از کوئری زیر استفاده می کنم:
$q = "SET NAMES 'utf8'";
mysqli_query($con, $q);
و بالاخره اینکه برای دیتابیس، جدولها و ستونها کلکشن رو بصورت utf8_unicode_ci تعریف می کنم. کلکشنهای زیر رو هم امتحان کردم ولی نتیجه ای نداشت.
utf8_general_ci
utf8_persian_ci
با تمام این کارها بعضی وقتها، بعد از اینکه مقادیر فارسی رو از پایگاه داده بازیابی می کنم و روی صفحه نمایش می دم، مقادیر به شکل ناخوانا توی صفحه نمایش داده می شن.
هر کاری که فکر می کردم انجام دادم ولی مشکل حل نشد. اگه چیزی به ذهن می رسه لطفا راهنماییم کنید؟
اسکریپتهایی که استفاده می کنم رو در ادامه نوشتم:
پس از زدن دکمه درج پيام، داده هاي پيام به اسکريپت زیر داده مي شن
<?php
ob_start();
session_start();
$_POST[userid] = $_SESSION[userid];
include('dbinfo.inc');
$cxn = mysqli_connect($host,$user,$password, $database)
or die ("امکان تماس با سرور وجود ندارد");
$q = "SET NAMES 'utf8'";
mysqli_query($cxn, $q);
$sql = "INSERT INTO message ($fields) VALUES (\"$values\")";
$result = mysqli_query($cxn,$sql)
or die("امکان انجام درخواست وجود ندارد: ".mysqli_error($cxn));
$_POST['sent_message'] = "";
$_POST['sent_title'] = "";
$_POST['php_message'] = 'پيام شما ثبت شد، اکنون مي توانيد يک پيام ديگر وارد کنيد';
extract($_POST);
include('user.php');
exit();
}
}
?>
اين کد حاوي فرم دريافت اطلاعات هست
<?php ob_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
session_start();
include('dbinfo.inc');
$cxn = mysqli_connect($host,$user,$password,$database)
or die ("امکان تماس با سرور وجود ندارد");
$sql = "select * from register where (userid ='$_SESSION[userid]')";
$result = mysqli_query($cxn,$sql)
or die("امکان انجام درخواست وجود ندارد: ".mysqli_error($cxn));
$sname = mysqli_fetch_row($result);
?>
<title><?php echo 'سلام'." "."$sname[10]"; ?></title>
</head>
<body>
<div id="center">
<form id="form1" name="form1" method="post" action="Message.php">
<table id="t" width="440" border="0" class="news"><?php
$php_message = $_POST['php_message'];
$sent_title = $_POST['sent_title'];
$sent_message = $_POST['sent_message'];
?>
<tr>
<td width="364" align="right">ارسال پيام
</td>
<td width="66" align="left"></td>
</tr>
<tr>
<td align="right"></td>
<td align="right"> </td>
</tr>
<tr>
<td align="right"><p class="red"><?php echo "$php_message" ?></p></td>
<td align="left"> </td>
</tr>
<tr>
<td align="right"><input name="sent_title" type="text" id="sent_title" value="<?php echo "$sent_title" ?>" size="40" maxlength="100" /></td>
<td align="left">عنوان پيام</td>
</tr>
<tr>
<td align="right"><label>
<textarea name="sent_message" id="sent_message" cols="40" rows="5"><?php echo "$sent_message" ?></textarea>
</label></td>
<td align="left">متن پيام</td>
</tr>
<tr>
<td align="right"><label>
<input type="submit" value="درج پيام" />
</label></td>
<td align="left"><input name="submit" type="hidden" id="submit_sent_message" value="yes" /></td>
</tr>
</table>
</form>
</body>
</html>