PDA

View Full Version : ذخیره کاراکتر فارسی در بانک mysql



sara333
سه شنبه 20 اردیبهشت 1390, 14:49 عصر
سلام
به یه مشکل عجیب برخوردم
یه بانک دارم که داخلش 3- 4 تا جدول داره و این مشکل فقط برای یکی از جدولا به وجود آمده !
این جدول اسمش buy هست و اگر اطلاعاتی که از داخل برنامه داخلش ذخیره میشه فارسی باشه کلا encodingش میریزه بهم .( فقط همین یه جدول بانکم .
تنظیمات هم تا اونجایی که میدونم درسته !
یکبارم کلا جدول رو پاک کردم و دوباره ساختم ولی بازم درست نشد .
شما میدونید مشکل از کجاست؟؟؟
6979069791

Mahdi.Spirit
سه شنبه 20 اردیبهشت 1390, 15:01 عصر
سلام
شما اون نوشته هاي فارسي رو مستقيم توي بانك مينويسين يا از توي برنامه تون؟ اگه مستقيم مينويسين و مشكلي نداره پس با encoding اون صفحه ارسال اطلاعات مشكل داره
collation بانك رو روي utf8_bin بزارين ببينين چطوره؟

sara333
سه شنبه 20 اردیبهشت 1390, 15:42 عصر
سلام
ببینید این مشخصات تو کد هام هست :

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
...........
و اینم مثلا :

<form id="buy" name="buyForm" action="coderahgiri.php" method="post">
<table>
<tr>
<td width="180"><label>*کدکالا</label></td>
<td><input type="text" name="productCode" id="productCode" onblur="getInfoProduct($productCode);"></td>
</tr>
<tr>
<td width="180"><label>نام کالا</label></td>
<td><input type="text" name="productName" id="productName" readonly="readonly" value=""></td>
</tr>...........
و این هم :

<?php
if(isset($_POST["nameFamily"]))
{
$nameFamily = $_POST["nameFamily"];
$state = $_POST["state"];
$city = $_POST["city"];
$tell = $_POST["tell"];
$email = $_POST["email"];
$addres = $_POST["addres"];
$payment = $_POST["payment"];
$ServerName = "localhost";
$DBName = "store";
$user = "root";
$pass = "";
$link = mysql_connect($ServerName,$user,$pass);
mysql_select_db($DBName,$link);
$sql = "INSERT INTO buy (nameFamily, state, city, tell, email, addres, payment) VALUES ('$nameFamily','$state','$city','$tell','$email',' $addres','$payment')";
$result = mysql_query($sql,$link);

}
?>

از داخل خود mysql هم که insert کردم مشکلی نبود و درست ثبت شد .
حالا چکار کنم؟ مشکل از کد هاست؟

alismith
سه شنبه 20 اردیبهشت 1390, 17:16 عصر
سلام

این دستور رو بعد از اتصال به بانک قرار بده:



mysql_query("SET NAMES 'utf8'", $link);


$link نام cannection به mysql هستش

موفق باشید

i-php-i
سه شنبه 20 اردیبهشت 1390, 18:04 عصر
بغیر از روشهایی که دوستان گفتن باید توجه کنید که توابعی مثلhtmlentities رو بصورت زیر فراخوانی کنید. یعنی UTF-8 رو هم توی تابع قرار بدید.


htmlentities($str, ENT_QUOTES,'UTF-8');

من همیشه قبل از ارسال کوری کد زیر رو استفاده می کنم و با مشکل مواجه نمی شم.

mysqli_set_charset($link, "utf8")