PDA

View Full Version : سوال: php + sqlserver



monaizadi
پنج شنبه 18 مهر 1387, 13:11 عصر
سلام
من می خوام یه سری داده رو از php وارد sqlserver کنم. با این کد ، به صورت utf-8 توی Sqlserver می نویسه. ولی موقع خوندن اون رو به فرمت ؟؟؟؟؟؟؟ نشون می ده.
<?php

$link = mssql_connect('ict2', 'sa', '142');
mssql_select_db('library', $link);
$utf8 = 'منا بهاره unicode UTF-8 data'; // some Greek text for example
$ucs2 = iconv('UTF-8', 'UCS-2LE', $utf8);
$arr = unpack('H*hex', $ucs2);
$hex = "0x{$arr['hex']}";
mssql_query("insert into book (price,name) values (1200,{$hex})",$link);
$result = mssql_query("select name ,price from
book", $link);
while (($row = mssql_fetch_array($result, MSSQL_BOTH)))
{
// we get data in UCS-2
// I use UTF-8 in my project, so I encode it back
//echo "&&&&";
echo $row['price'];
}

mssql_free_result($result);
mssql_close($link);
?>

امید امرایی
پنج شنبه 18 مهر 1387, 22:06 عصر
SQLServer با UTF-8 مشکلی نداره دوست عزیز.
مشکل به Encoding صفحتون بر می گرده . بهتره صفحه ای که ورود اطلاعات در اون انجام می شه به UTF ذخیره شده باشه. مشکل شما زمانی اتفاق می افته که اطلاعات از مرورگر جدا می شن تا به دیتابیس فرستاده بشن .

yaqubian
جمعه 19 مهر 1387, 18:53 عصر
دوست عزیز
لطفا کدهاتون رو داخل [CODE] قرار بدین. ممنون.
من هم با kassit عزیز موافقم.
موفق باشید

monaizadi
شنبه 20 مهر 1387, 08:39 صبح
سلام
من بالای صفحه ام utf-8 رو قرار دادم.به صورت زیر:


<!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" />
<title>Untitled Document</title>
</head>

<body>
<?php

$link = mssql_connect('ict2', 'sa', '142');
mssql_select_db('library', $link);
$utf8 = 'علی'; // some Greek text for example
$ucs2 = iconv('UTF-8', 'UCS-2LE', $utf8);
$arr = unpack('H*hex', $ucs2);
$hex = "0x{$arr['hex']}";
mssql_query("insert into book (price,name) values (1200,{$hex})",$link);
$result = mssql_query("select convert(varbinary(200), name),price from
book", $link);
while (($row = mssql_fetch_array($result, MSSQL_BOTH)))
{
// we get data in UCS-2
// I use UTF-8 in my project, so I encode it back
//echo "&&&&";
echo $row['price'];
}

mssql_free_result($result);
mssql_close($link);
?>
</body>
</html>
مگه جای دیگه هم باید بزارم؟

tanha2007
شنبه 20 مهر 1387, 17:32 عصر
سلام.
فقط از صفحه خود یک save as بگیر و درقسمت Encoding در اونجا utf-8 را انتخاب کن.

امید امرایی
شنبه 20 مهر 1387, 23:44 عصر
استفاده از Notepad هم می تونه کارساز باشه
Save as > Change Encoding from ANSI to UTF-8

meysamm
یک شنبه 21 مهر 1387, 08:11 صبح
سلام اگر با راهنمایی های دوستان مشکلتون حل نشد به دو نکته توجه کنید:
1. وقتی دیتا بیس sqlserver رو می سازید Collation Name رو Arabic_Cl_AS انتخاب کنید
2. فیلدهاتون رو از نوع nvarchar انتخاب کنید

monaizadi
یک شنبه 21 مهر 1387, 08:50 صبح
سلام
من این کارایی که گفتین انجام دادم ولی بازم نشد.sqlserver هم نگاه کردم nvarchar ,collation هم هست.

monaizadi
سه شنبه 23 مهر 1387, 10:18 صبح
من تونستم اینو درستش کنم.
با استفاده از تابع iconv، داده هایی رو که به صورت utf-8 می خونیم رو تو php درست نمایش بدیم.