تبلیغات
لذت برنامه نویسی - چگونه مشکل "ی" و "ک" فارسی در دیتایس را حل کنیم ؟

جستجو

 

چگونه مشکل "ی" و "ک" فارسی در دیتایس را حل کنیم ؟

جمعه 19 خرداد 1391   10:53 ق.ظ


نوع مطلب : VB.Net ،SQL Server ،

با سلام به همه دوستان عزیز
شاید برای شما هم پیش اومده باشه که بخواید یه Query جستجو ساده روی دیتابیس با SQL بزنید ولی وقتی جستجو می کنید خروجی چیز دیگریست !
بعنوان مثال شما می خواید اسم "علی" رو جستجو کنید ، ولی وقتی دستور SQL جستجو رو می نویسید خروجی خالی هست ، دلیلش اینه که حروف ی و ک در دیتابیس بصورت عربی ذخیره می شن و یونیکد اونا فرق داره با ی و ک فارسی !

حالا چاره کار چیست ؟

یه راه حل ساده و بدون دردسر :

هر کجا که می خواید از ورودی اطلاعات رو بگیرید و تو دیتابیس ذخیره کنید اول با یه تابع ساده حروف فارسی را با عربی جایگزین کنید و بعد تو دیتابیس ذخیره کنید ، هر جا هم خواستید جستجو کنید اول رشته ورودی رو برای این تابع ارسال کنید و بعد خروجی این تابع را برای دستور SQL ارسال کنید :

در ادامه دو تابع ارائه شده که اولی برای تبدیل کاراکتر های فارسی به عربی در یک رشته است ، تابع دوم هم عکس تابع اول هست :

VB.NET Code :

Public Shared Function ConvertCharPersianToArabic(ByVal Input As String) As String
            Dim Output As String = Input.Trim().Replace(ChrW(1740), ChrW(1610))
            Return Output.Replace(ChrW(1705), ChrW(1603))
End Function

Public Shared Function ConvertCharArabicToPersian(ByVal Input As String) As String
            Dim Output As String = Input.Trim().Replace(ChrW(1610), ChrW(1740))
            Return Output.Replace(ChrW(1603), ChrW(1705))
End Function


C#.Net Code : 

public static string ConvertCharPersianToArabic(string Input)
{
string Output = Input.Trim().Replace(Strings.ChrW(1740), Strings.ChrW(1610));
return Output.Replace(Strings.ChrW(1705), Strings.ChrW(1603));
}

public static string ConvertCharArabicToPersian(string Input)
{
string Output = Input.Trim().Replace(Strings.ChrW(1610), Strings.ChrW(1740));
return Output.Replace(Strings.ChrW(1603), Strings.ChrW(1705));
}


نوشته شده توسط : پژمان رودخانه یی