PDA

View Full Version : مشکل جستجو در کد نویسی با حرف (ی)



nilmil_nil
یک شنبه 02 تیر 1387, 20:04 عصر
سلام به بروبچ
من یه مشکل تو کد نویسی دارم و اون اینه که وقتی یه کلمه که توی اون حرف (ی) وجود داشته باشه رو پیدا نمی کنه به فرض مثال کد زیر



if(str1=="نقدی")
{
}

احمد سامعی
یک شنبه 02 تیر 1387, 20:36 عصر
سلام به بروبچ
من یه مشکل تو کد نویسی دارم و اون اینه که وقتی یه کلمه که توی اون حرف (ی) وجود داشته باشه رو پیدا نمی کنه به فرض مثال کد زیر



if(str1=="نقدی")
{
}


سلام عزیز
اول اینکه با اجازه مدیر تالار ورودتون به این انجمن و جمع برنامه نویسان غیر حرفه(مثل خودم) و حرفه ای ها تبریک می گم بهترین جایی که در ایران می تونی مشکلات برنامه نویسی حل کنی اینجاست چون دوستان بی دریغ کمک می کنند

دوم اینکه شما باید سوال با کد کامل تر مطرح کنی سوالت نا مفهوم
گاهی هم با تعویض نسخه کمپایلر و ویندوز مشکل حل می شه

saber4166
یک شنبه 02 تیر 1387, 21:41 عصر
سلام بر دوست عزیز
کافیه فقط در sql در tabel خودت در فیلد مورد نظر که می تونه name باشه نوع اش رو
از نوع nvarchar یا ntext بگیری مشکلت حل مشه

razavi_university
دوشنبه 03 تیر 1387, 00:26 صبح
این به خاطر اینه که فارسی سازها و فونت های مختلفی روی ویندوز ها نصب میشه و گاهی در دیتابیس 'ي' ذخیره میشه گاهی 'ی'
واسه همین در جستجو هم همین مشکل خودشو نشون میده
پیشتر یکی از دوستان کدی برای Replace ایندو در هنگام Insert و جستجو گذاشته بود که همیشه 'ی' ذخیره میشد و همیشه هم 'ی' می شد
جستجو کنید تا ... ;)

captain_black81
دوشنبه 03 تیر 1387, 09:30 صبح
در sql میتونید از دستور زیر استفاده کنید


select 8 from mytable where name LIKE N'MYNAME'

hamed_gibago
دوشنبه 03 تیر 1387, 09:51 صبح
همانطور که دوست عزیزمون گفت در sql حرف ي به جای ی ذخیره می شه . من هم همین مشکل رو داشتم . برای این منظور تو همون Query که نوشتی می تونی به جای ی در حالت فارسی کلید Shift + X رو بزنی . مشکلت حل می شه:لبخند:

nilmil_nil
دوشنبه 03 تیر 1387, 10:07 صبح
این به خاطر اینه که فارسی سازها و فونت های مختلفی روی ویندوز ها نصب میشه و گاهی در دیتابیس 'ي' ذخیره میشه گاهی 'ی'
واسه همین در جستجو هم همین مشکل خودشو نشون میده
پیشتر یکی از دوستان کدی برای Replace ایندو در هنگام Insert و جستجو گذاشته بود که همیشه 'ی' ذخیره میشد و همیشه هم 'ی' می شد
جستجو کنید تا ... ;)


بچه ها متشکرم ولی منظور من در sql نیست بلکه در خود کد نویسی است
یعنی وقی می خواهم یه کلمه فارسی رو جست جو یا در یه شرط مورد بررسی قرار بدم
اگر کلمه دارای حرف ی باشد شرط برقرار نمی شه



if(txt1.text=="دریافت")
messagebox.show("ok"(;

sepide1
دوشنبه 03 تیر 1387, 10:31 صبح
همينطور كه دوستان فرمودند اگه Sql server استفاده مي كني از Nvarchar استفاده كن اگه هم از اكسس استفاده مي كني به جاي اينكه اطلاعاتت را مستقيم در بانك بنويسي سعي كن در برنامه ات يك insert قرار بدي و از طريق وي‍ژوال استديو اطلاعاتت را در بانك ارسال كني اين طوري ديگه مشكلي در جستجو نخواهي داشت(من قبلا امتحان كردم)

sepide1
دوشنبه 03 تیر 1387, 10:38 صبح
بچه ها متشکرم ولی منظور من در sql نیست بلکه در خود کد نویسی است
یعنی وقی می خواهم یه کلمه فارسی رو جست جو یا در یه شرط مورد بررسی قرار بدم
اگر کلمه دارای حرف ی باشد شرط برقرار نمی شه



if(txt1.text=="دریافت")
messagebox.show("ok"(;

ببين براي اين كار كافيه يك بار برنامه ات را اجرا كني بعد داخل تكست باكس ات دريافت را بنويس بعد آن را كپي كن و داخل كدت به جاي دريافت قرار بده من الان انجام دادم درست شد شما هم انجام بده نتيجه را اعلام كن

hosseini_87
سه شنبه 04 تیر 1387, 16:39 عصر
این به خاطر اینه که فارسی سازها و فونت های مختلفی روی ویندوز ها نصب میشه و گاهی در دیتابیس 'ي' ذخیره میشه گاهی 'ی'
واسه همین در جستجو هم همین مشکل خودشو نشون میده
پیشتر یکی از دوستان کدی برای Replace ایندو در هنگام Insert و جستجو گذاشته بود که همیشه 'ی' ذخیره میشد و همیشه هم 'ی' می شد
جستجو کنید تا ... ;)

اگه ممکنه آدرس اون کدرو بذارین واسمون

nilmil_nil
شنبه 05 مرداد 1387, 11:56 صبح
با تشکر از Sepide1
امتحان کردم ولی نشد باز هم حل نشد یعنی شرط برقرار نشد

migrant
شنبه 05 مرداد 1387, 12:23 عصر
سلام عزیز
اول اینکه با اجازه مدیر تالار ورودتون به این انجمن و جمع برنامه نویسان غیر حرفه(مثل خودم) و حرفه ای ها تبریک می گم بهترین جایی که در ایران می تونی مشکلات برنامه نویسی حل کنی اینجاست چون دوستان بی دریغ کمک می کنند

دوم اینکه شما باید سوال با کد کامل تر مطرح کنی سوالت نا مفهوم
گاهی هم با تعویض نسخه کمپایلر و ویندوز مشکل حل می شه



سلام دوست عزیز .
مشکل شما اینه که در Sql serverحرف "ی" بصورت "ي" ذخیره می شود و شما هم باید در جستجو از دکه های shift + X برای تایپ حرف "ي" استفاده کنید . مشکلتون حل میشه .

nilmil_nil
شنبه 05 مرداد 1387, 12:28 عصر
سلام دوست عزیز .
مشکل شما اینه که در Sql serverحرف "ی" بصورت "ي" ذخیره می شود و شما هم باید در جستجو از دکه های shift + X برای تایپ حرف "ي" استفاده کنید . مشکلتون حل میشه .
ممنون از پاسخ تون ولی مشکل من تو کد نویسی است
یعنی وقتی که می خوام یه متغیری با یه مقدار رشته ای که تو دابل کوتیشن گذاشتم رو تویه شرط بذارم
اون شرط برقرار نمی شه و مشکا اینه که اون رشته توش حرف "ی" و جود داره

رضا جاسبی
جمعه 11 مرداد 1387, 05:47 صبح
ممنون از پاسخ تون ولی مشکل من تو کد نویسی است
یعنی وقتی که می خوام یه متغیری با یه مقدار رشته ای که تو دابل کوتیشن گذاشتم رو تویه شرط بذارم
اون شرط برقرار نمی شه و مشکا اینه که اون رشته توش حرف "ی" و جود داره
اگر بجای دریافت کلمه دیگری که حرف ی درش نباشه بذاری درست میشه؟
به نظر من راه حل Sepide باید جواب بده. یعنی همون متنی که می نویسی رو در کدت هم عینا بنویسی و در این صورت هر دو نوع ی مثل هم نوشته میشن.

یک نکته مهم هم وجود داره که نمی دونم در کدوم نسخه دات نت ولی یه جایی خوندم که متغیرهای String رو با مساوی یکی نمی بینه. یعنی عملگر مساوی روی آدرسشون کار می کنه نه محتواشون.
بجای"دریافت" == txt1.text از ("دریافت")txt1.text.CompareTo استفاده کن.

sepide1
شنبه 12 مرداد 1387, 08:08 صبح
اگه ميتوني سورس برنامه ات را بذار تا مشكل ات را حل كنيم

رضا جاسبی
یک شنبه 13 مرداد 1387, 00:13 صبح
دوستان عزیز که با حرف ی مشکل دارید و البته احتمالا حرف ک هم همینطوره. من یک فایل dll رو ضمیمه می کنم که کافیه در Windows\system32 و windows\system32\dllcache کپی بشه. اول هم در dllcache و بعد در خود system32.
احتمالا ممکنه که فولدر dllcache رو در system32 نبینید چون hiden است. در addressbar تایپ کنید.
اینطوری کدی که برای کلید D زده میشه همون حرف Shift+X خواهد بود. البته در اون صورت مشکل ی رو برعکس برخورد می کنیم. یعنی اون اطلاعاتی که قبلا در DB داشتیم با کد قدیم ی ثبت شده. اما به یکبار اصلاح می ارزه. در سایر محیطها مثل ورد هم نوشته شما به صورت قدی‌م نمیشه و قديم نوشته میشه
یکبار ازتون Windows CD می خواد که cancel کنید و یکبار هم Restart

hasanr
یک شنبه 15 فروردین 1389, 17:29 عصر
سلام،
استاندارد حروف ک،ی در ویندوزهای قدیمی با آنچه امروزه استفاده می شود متفاوت است هر چند در مشاهده حروف تغییری احساس نکنیم
پیشنهاد می کنم برنامه ای مانند TrayLayout را نصب کنید و امکان تایپ انواع این حروف (مثلا حرف {ی} فارسی و {ی} یا {ي} عربی) را در صفحه کلید خود فراهم کنید حالا در کوئریتان حروف مذکور را با نوع جدید (یا قبلی) آنها عوض کنید و استفاده نمایید

توضیحات بیشتر:
جای حروف در صفحه کلید استاندارد فارسی با کلیدهای تعریف شده توسط مایکروسافت متفاوت است، به عنوان مثال جای حروف پ، ژ، در صفحه کلید استاندارد فارسی با آنچه در ویندوز است فرق میکند. با نصب برنامه Tray Layout جای حروف در صفحه کلید شما مطابق صفحه کلید استاندارد فارسی خواهد شد.
اما نکته بدرد بخور اینجاست که با {شیفت + ی} حرف { ي } عربی و با {شیفت + . (نقطه)} حرف { ك } عربی تایپ می‌شود .
البته شما می توانید جای حروف روی صفحه کلید را مطابق میل خودتان نیز تغییر بدهید


برنامه Tray Layout از اینجا (http://sourceforge.net/projects/farsitools/files/Mehrsoft%20TrayLayout/1.2/traylayout-1.2.zip/download) دریافت کنید


برای اطلاعات بیشتر درباره استانداردهای حروف در فارسی و عربی به اینجا (http://www.isiri.org/std/6219.htm#BookMark4) بروید

ehsan248
دوشنبه 16 فروردین 1389, 11:28 صبح
یه تابعی مثل این هم بد نیست که تبدیل کنه یه رشته رو به حروف فارسی

private string ChangeToPersian(string InpStr)
{
int i;
char[] NewStr = new char[InpStr.Length];
for (i = 0; i < InpStr.Length; i++)
{
if (InpStr[i] == 'ی')
{

NewStr[i] = 'ي';

}
else if (InpStr[i] == 'ک')
{

NewStr[i] = 'ك';

}
else
{
NewStr[i] = InpStr[i];
}


}
string RetStr = new string(NewStr);
return RetStr;
}