PDA

View Full Version : سوال: مشکل فارسی PHP و بانک MSSQL2000



a_maisami
چهارشنبه 24 تیر 1388, 15:12 عصر
هنگام انتقال اطلاعات فارسی از صفحات وب به بانک مشکل دارم به عنوان مثال :


$LoginName = 'رضايي' ;
$LoginName = iconv("UTF-8", "windows-1256", $LoginName);



پس از اجرای کد زیر :
mssql_query("SELECT '".$LoginName."' ");



چیزی که در بانک اجرا میشود بصورت زیر است :
SELECT 'رضا'



حال سوال من این است چرا حرف ی حذف می شود و چگونه میتوان جلوی آن را گرفت ؟




بزرگواری می کنید اگه من را راهنمایی کنید .

a_maisami
پنج شنبه 25 تیر 1388, 12:36 عصر
با تشکر از همکاری دوستان لینک های زیر در مورد این مشکل به خوبی توضیح داده اند :


http://www.barnamenevis.org/forum/showthread.php?t=166623

http://www.barnamenevis.org/forum/showthread.php?t=155033

http://www.centralclubs.com/forum-f87/7-t55212.html

http://www.iranphp.net/forum/showthread.php?t=1760

http://forum.mec.ir/viewtopic.php?f=22&t=70

http://vahidnasiri.blogspot.com/2009/01/blog-post_13.html


دوست عزیز این مشکلی که شما داری از این ناشی میشه که ما دو نوع "ی" داریم.

یکی "ی" فارسی و دیگری "ي" عربی .

اگه دقت کنی "ي" عربی دو تا نقطهزیرش داره که با Shift + x درج میشه.

این دو تا ی کد اسکیشون با هم فرقمیکنه به خاطر همین وقتی کلمه ای که در پایگاه داده شما ذخیره شده یکی روداشته باشه و در application شما کلمه ای که مورد جستجو قرار میدید مدلدیگر ی رو داشته باشه نمی تونه کلمه مورد نظر شما رو تو بانک پیدا کنه.

این مشکل رو حتی برنامه های بزرگ هم دارن و من زیاد باهاش برخورد کردم
راه حل سهل الوصولش اینه که ببینی در حال حاضر سیستمی که application روشاجرا میشه چه نوع ی رو استفاده میکنه تمام ی های data base رو با توابعتبدیل کد اسکی به اون نوع ی تبدیل کنی
ولی این راه حل اشتباهه و اصلا نمیشه رو همه سیستم ها مدیریت داشت

راه حل اصولی اینه که ابتدا با توابع جایگزینی حرف تمام ی های data base رو یه دست کنی و بعد تو application کدی بنویسی که هنگام درج داده ها دربانک همیشه عملیات تبدیل ی صورت بگیره و کلماتی که تو بانک ذخیره میشه بایک نوع ی درج بشن
جداول کد اسکی حروف به وفور تو اینترنت موجود و توابع جایگزینی و تبدیل حروف رو هم می تونی تو همین بخش با جستجو پیدا کنی