PDA

View Full Version : مشکل در ورود داده های فارسی در برقراری php با Sql Server



بهزاد سلطانی
یک شنبه 16 دی 1386, 17:04 عصر
با سلام خدمت همه دوستان برنامه نویس حرفه ای
من توسط php ارتباطی را با بانک اطلاعاتی در Sql Server برقرار کردم.
اما...
داده های ورودی که فارسی میباشند در sql ناخوانا می باشند و تغییر می کنند.

مواردی که رعایت کردم به ای ترتیب می باشد.
1- استفاده از UTF8 در سورس کد php
2- استفاده از COLLATION و character set "Arabic_bin"
3- استفاده از حرف N در اول query که باعث ورود اطلاعات به منظور ورود داده های فارسی
4- استفاده از Data Type . Nvarchar

دوستان من این کارها را انجام دادم ولی باز دوباره اطلاعات ورودی در SQL تغییر می کند
به غیر از این راه ها می توانید منو کمک کنید تا این مشکل را برطرف کنم.

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

ممنون از همه

musiox
یک شنبه 16 دی 1386, 17:49 عصر
با تابع های اکستنشن mssql وصل می شی؟

بهزاد سلطانی
یک شنبه 16 دی 1386, 19:29 عصر
سلام
با تشکر از شما
بله با اکستنشن های mssql وصل می شم.
به صورت مستقیم و نه با ODBC
اگه نمونه کدی برای اتصال به دیتابیس البته با داده فارسی به من بدهید خیلی ممنونتون می شم.
البته من یک طراح حرفه ای وب سایت هستم.
امیدوترم بتونم در اون زمینه . مشکل یا همکاری خواستید بتونم راهنمایی یا کمکتون کنم.
البته من تازه شروع به یادگیری PHP کردم ولی انقدرهم ناشی نیستم.
ممنون از توجهتون.

musiox
دوشنبه 17 دی 1386, 10:53 صبح
توی منجر اینطوریه؟ یا اطلاعاتی هم که توی صفحه چاپ می شه توی فرمت درست نیست؟
اینم که یادت نرفته؟

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

بهزاد سلطانی
دوشنبه 17 دی 1386, 11:27 صبح
سلام دوست عزیز
همونطوری که در تاپیک اول گفتم تمامی این کارهارو انجام دادم
اینم کد استفاده شده برای insert و ورود اطلاعات به دیتابیس



<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<?php

$query ="insert into malek (OwnerName,OwnerTel,OwnerAddress,radio,check_A) values (";
$query = $query."N'".$_GET['OwnerName']."',";
$query = $query."N'".$_GET['OwnerTel']."',";
$query = $query."N'".$_GET['OwnerAddress']."',";
$query = $query."'".$_GET['radio']."',";
if(empty($_GET['check']))
{$query = $query."0)"; }
else {$query = $query."'".$_GET['check']."')";}

$msqlconc = mssql_connect("behzad","sa","33383091",CP_UTF8);
if ( ! $msqlconc )
die( "Couldn't connect to MSSQL" );
echo $query;
mssql_select_db("RealEstate", $msqlconc);
mssql_query($query,$msqlconc);
mssql_close($msqlconc);
?>



فکر کنم احتمال آخر ایراد از ویندوزم باشه ولی موقعی که داده رو مستقیم و دستی توی دیتابیس وارد می کنم از نظر فارسی مشکل نداره ولی با php که می فرستم مشکل داره.

ممنونم بازم.
اگر در رابطه با طراحی و دیزاین سایت کمکی خواستید به صورت کاملا حرفه ای در خدمتم.

musiox
دوشنبه 17 دی 1386, 13:48 عصر
mssql_connect ([ string $servername [, string $username [, string $password [, bool $new_link ]]]] )

این تابع codepage رو نمی گیره . تا اونجایی که من می دونم یه مشکل با این توابع همینه . چون منم قبلا باهاش همین مشکل رو داشتم . شما می تونی از COM استفاده کنی . من با اون امتحان این مشکل رو ندارم . البته بگم سیستم من مشکل داره و نمی تونم sql server 2000 رو روش نصب کنم . الانم 97 روی سیستم من داره کار می کنه . من قبلا که یه پروژه با php و sql server 200 نوشته بودم نمی دونم توابع odbc بود یا mssql ( شایدم جفتشون بود ) , ولی با داده های unicode مشکل داشت و بهم خطا میداد . اینم بگم که سرعت تابع های mssql خیلی بیشتر از استفاده از اشیا کامه . در ضمن نمایش اطلاعات بوسیله php با همون توابع mssql مشکل نداره فقط توی دیتا بیس توسط منجر بخوای ویرایش کنی, در هم بر هم نشون میده .

hscomp2002
دوشنبه 23 دی 1387, 19:00 عصر
سلام دوست عزیز به این روش مشکله من حل شد


$stemp = iconv("UTF-8","Windows-1256","تست");
mssql_query("INSERT INTO manategh values('".$stemp."');");

rizashshka
چهارشنبه 09 بهمن 1387, 11:38 صبح
سلام دوست عزیز به این روش مشکله من حل شد
کد:
$stemp = iconv("UTF-8","Windows-1256","تست");
mssql_query("INSERT INTO manategh values('".$stemp."');");

سلام دوستان
روش هایی که دوستان ارائه میکنند بعضا خیلی خوبه ولی من ترجیح میدم اساسا از php_mssql.dll استفاده نکنم و به جاش از php_sqlsrv.dll استفاده کنم که خیلی بهتر عمل میکنه.
شما هم حتما اونو امتحان کنید.

javad3d
شنبه 03 اسفند 1387, 20:29 عصر
سلام دوستان
روش هایی که دوستان ارائه میکنند بعضا خیلی خوبه ولی من ترجیح میدم اساسا از php_mssql.dll استفاده نکنم و به جاش از php_sqlsrv.dll استفاده کنم که خیلی بهتر عمل میکنه.
شما هم حتما اونو امتحان کنید.

با سلام

با اونكه من هم ا extension=php_sqlsrv_ts.dll استفاده مي كنم مشكل فارسي رو دارم

hamid67fathi
دوشنبه 05 اسفند 1387, 11:46 صبح
سلام
مشکل نه از ويندوز نه از php !!
چون php و sql با هم mach نيستن همچين مشکلی پيش مياد.
من برای خاندن اطلاعاتی کيه به صورت فارسی وارد شده بودن تنها تونستم به کد اسکی تبديل کنم و معادل سازی کنم.
اما برای ورود اطلاعات راهی پيدا نکردم تمامی راه هايی که دوستان گفتن رو هم امتهان کرده بودم اما نشد.

javad3d
دوشنبه 05 اسفند 1387, 20:31 عصر
خودم يك راهي پيدا كردم.....

اگه يونيكد رو اين

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=big5">

بزاريم درست ميشه
البته Sql 2k5 كه به صورت arabic نصب شده و استفاده از php_sqlsrv_ts.dll

dj_baba
شنبه 10 اسفند 1387, 11:20 صبح
خودم يك راهي پيدا كردم.....

اگه يونيكد رو اين

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=big5">

بزاريم درست ميشه
البته Sql 2k5 كه به صورت arabic نصب شده و استفاده از php_sqlsrv_ts.dll

میشه بیشتر توضیح بدی
من متوجه این خط آخر نشدم
البته Sql 2k5 كه به صورت arabic نصب شده و استفاده از php_sqlsrv_ts.dll