PDA

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



hosein_amir
03-11-2009, 13:36
کل مسئله اینه که من یه AddIn برای Word2003 نوشتم که یه سری اطلاعات کتاب رو مثل نام مولف ، نام کتاب و ... رو از فایل ورد میخونه و به دیتابیس وارد میکنه که بعدا بشه اونها رو سرچ کرد اول برنامه رو معمولی نوشتم بصورتی که اطلاعات مستقیم وارد دیتابیس بشه ولی اطلاعات بصورت یونیکد عربی از ورد وارد دیتابیس می شد و طبعا در دیتابیس هم همونطور دیده می شد.
بعد از تو سایت یه dll پیدا کردم که اطلاعات رو به یونیکد استاندارد فارسی تبدیل میکرد که( H2 عزیز گذاشته بود)بعد از استفاده از اون مشکل عربی وارد شدن اطلاعات حل شد ولی همچنان سرچ هیچ جوابی نمیده در ضمن هم از Collation Arabic_CI_AS و هم از Persian100_CI_AS هم استفاده کردم ولی جوابی نگرفتم . تمام فیلد ها هم از نوع nvarchar هستند.
البته وقتی از LIKE استفاده میکنم و بدون استفاده از پارامتر سرچ جواب میده و لی چون من از Strongly Typed Dataset تو برنامه استفاده کردم میخوام با پارامتر سرچ رو انجام بده .:37: لطفا راهنماییم کنید چون خیلی گیرم
ممنونم از همه دوستان

bad_boy_2007
03-11-2009, 19:46
کل مسئله اینه که من یه AddIn برای Word2003 نوشتم که یه سری اطلاعات کتاب رو مثل نام مولف ، نام کتاب و ... رو از فایل ورد میخونه و به دیتابیس وارد میکنه که بعدا بشه اونها رو سرچ کرد اول برنامه رو معمولی نوشتم بصورتی که اطلاعات مستقیم وارد دیتابیس بشه ولی اطلاعات بصورت یونیکد عربی از ورد وارد دیتابیس می شد و طبعا در دیتابیس هم همونطور دیده می شد.
بعد از تو سایت یه dll پیدا کردم که اطلاعات رو به یونیکد استاندارد فارسی تبدیل میکرد که( H2 عزیز گذاشته بود)بعد از استفاده از اون مشکل عربی وارد شدن اطلاعات حل شد ولی همچنان سرچ هیچ جوابی نمیده در ضمن هم از Collation Arabic_CI_AS و هم از Persian100_CI_AS هم استفاده کردم ولی جوابی نگرفتم . تمام فیلد ها هم از نوع nvarchar هستند.
البته وقتی از LIKE استفاده میکنم و بدون استفاده از پارامتر سرچ جواب میده و لی چون من از Strongly Typed Dataset تو برنامه استفاده کردم میخوام با پارامتر سرچ رو انجام بده .:37: لطفا راهنماییم کنید چون خیلی گیرم
ممنونم از همه دوستان

مشكل "ي" و "ك" !
بسيار ساده است ،
ابتدا توافق كنيد ميخواهيد عربي سرچ كنيد يا با كاراكتر هاي فارسي و سپس كوئري تان را به شكلي مشابه با كوئري ذيل تغيير دهيد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

و اما تابع FixString را هم به اين صورت ايجاد كنيد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


براي سرچ هم شايد كدي مشابه كد زير به دردتان بخورد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

روش فوق تست شده است و مشكلي ندارد فقط بهتر است ابتدا يك بار داده هاي جدولتان را يا تابع FixString بروز نماييد كه سرباز پردازشي اضافه نداشته باشيد .
روشهاي ديگري هم همچون جايگزين كردن چند Dll هست كه به شخصه توصيه نميكنم .