PDA

View Full Version : سوال: ذخیره عربی داده ها و نمایش فارسی آنها و مشکل در مقایسه داده های ورودی و ذخیره شده



naby123
پنج شنبه 10 فروردین 1391, 14:43 عصر
با سلام و خسته نباشید خدمت همه دوستان...
من با سی شارپ یه برنامه نوشتم که بانک اطلاعاتش با SQL هست. حالا به یه مشکل برخوردم. مثلا اسم وقتی توی textbox وارد میشه فارسی هست. یعنی مثلا زیر حرف "ی" دو نقطه نداره. "ي". ولی وقتی توی دیتابیس ذخیره میشه عربی میشه. مثلا "ي" به جا "ی". یه Combobox توی برنامه دارم که این نام رو بهش لینک کردم. ولی توی این Combobox اسم بدون دو نطقه زیرش نمایش داده میشه. مثلاً به جای "علي" ، "علی" نمایش داده میشه. توی یه datagridview که اطلاعات رو نمایش میدهد کلمه همون طور که ثبت شده نمایش داده میشه مثلا "علي". توی یه قسمت دیگه برنامه یه شرط داره که اسم وارد شده توی combobox رو با اسم نمایش داده شده توی datagridview مقایسه میکنه و چون "علی" با "علي" فرق داره وارد شرط نمیشه. از نظر کد نویسی هیچ مشکلی نداره ولی جواب نمیدهد.
امیدوارم تونسته باشم مشکلمو برسونم. بازم به طور خلاصه بگم مشکل ورودی گرفتن عربی کاراکترها توی textbox ها و فارسی نمایش دادن توی comboboxهست.
راه های زیادی واسه دور زدن این مشکل هست مثل استفاده از ID به جای نام ولی نمیخوام از این روش ها استفاده کنم.
اگه کسی فهمید چی گفتم و میدونه چکار باید کنم ممنون میشم راهنمایی کنه...

rezarko
پنج شنبه 10 فروردین 1391, 15:36 عصر
دوست عزیز فونت کنترل هاتو بزار Tahoma ببین مشکلت حل میشه

masoudmok
پنج شنبه 10 فروردین 1391, 16:24 عصر
سلام .
ممکنه زبان پایگاه دادتو اشتباه انتخاب کرده باشی . تو نسخه های 2008 به بعد پرشین داره ولی اگه نداره از Arabic_CI_AS استفاده کن
موفق باشی

naby123
پنج شنبه 10 فروردین 1391, 17:14 عصر
دوست عزیز فونت کنترل هاتو بزار Tahoma ببین مشکلت حل میشه

فونت رو عوض کردم ولی جواب نداد. وقتی از دیتابیس اطلاعات رو میخونه اتوماتیک فارسی میشه و اگه بخواهیم کوئری بنویسیم که توی دیتابیس اطلاعات رو با یه شرط بخونه چون توی فرم ویندوز فارسی هست و توی دیتابیس عربی خروجی نمیده.

naby123
پنج شنبه 10 فروردین 1391, 17:45 عصر
سلام .
ممکنه زبان پایگاه دادتو اشتباه انتخاب کرده باشی . تو نسخه های 2008 به بعد پرشین داره ولی اگه نداره از Arabic_CI_AS استفاده کن
موفق باشی

یادمه اول کار زبان پایگاه داده رو عربی انتخاب کردم. واسه همینه الان همه چیزو عربی میکنه. الان اگه بخوام زبان رو تغییر بدم کجا باید برم؟هر چی SQL رو زیرو رو کردم یادم نیومد کجا بود.:خجالت:

samadblaj
پنج شنبه 10 فروردین 1391, 18:31 عصر
ببیــــــــن. (http://msdn.microsoft.com/en-us/library/ms190682%28v=sql.110%29.aspx)

misoft.ir
جمعه 11 فروردین 1391, 19:06 عصر
سلام
حتما با کد نویسی ورودی ها رو چک کن که اگر عربی هستند ، با معادل فارسی جایگزین شوند. عموما با این روش مشکل حل میشه.

یک راه هم این است که در دستور T_SQL از حرف N استفاده کنی.
مثلا where Name=N'علی'

خیلی خلاصه نوشتم چون این امکان وجود داشت که با جستجو به نتیجه دلخواهتون برسید.
همانند سازی ی و ي یا مشکل ی فارسی و ي عربی.

fakhravari
شنبه 12 فروردین 1391, 19:08 عصر
#region مدیریت حروف عربی به فارسی
public static string Farsi_Text(string Text)
{
return Text.Replace("ي", "ی").Replace("ك", "ک");
}
#endregion

s3rv3r
یک شنبه 13 فروردین 1391, 00:31 صبح
به نظر بنده حقير راحت ترين كار اينه تو رويداد keypress فرم هات اين دو خط كد رو بزار . و نيازي نيست كه تو كوئريت N بزني يا زبان ديتابيس رو عوض كني


private void frmLogin_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 'ي') e.KeyChar = 'ی';
if (e.KeyChar == 'ك') e.KeyChar = 'ک';
}


اگه كارت راه افتاد همينجا اعلام كن عزيز

موفق باشي

NaserHadi
جمعه 06 مرداد 1391, 10:48 صبح
سلام
راه حل شما به جاست و درسته ولی تا وقتی کار می کنه که کاربر برای ورود اطلاعات دقیقا دکمه های کیبورد را فشار بده
اگر احیانا مثلا اطلاعات رو از جایی کپی کرده و در محلی که قراره رویداد KeyPress اتفاق بیافته Paste کنه اونموقع دیگه رویداد KeyPress کار نکرده و باز مشکل باقی می مونه
پس روش شما به تنهایی کافی نیست