نقل قول: مشکل در جستجو با حرف (ی)
با سلام
من هم همین مشکل رو دارم البته می دونم که به خاطر فارسی ساز نصب شده ویندوزه- البته من با (ک) هم مشکل دارم . اگه کسی برای حل این مشکل راه حلی داره ممنون می شم بگه.
نقل قول: مشکل در جستجو با حرف (ی)
دوستان عزیز این مشکل به علت تفاوت حرف ی در زبان عربی و فارسی و تعدد حالتهای این حرف است . برای حل این مشکل یا باید بانک خود را آپدیت کنید و یا یک روش راحتتر این است که وقتی در جستجوی شما حرف ی به میان آمد در رشته خود پیمایش کنید و کلیه حرفهای ی موجود را با یک حرف ی ( که آنرا با کد اسکی اش معرفی و انتخاب میکنید ) تعویض کنید و با همین حرف ی اطلاعات را سرچ و یا ذخیره کنید به عبارتی دیگر وقتی اطلاعاتی را میخواهید در بانکتان بریزید ابتدا آنرا با یک تابعی که برای منظور فوق تعریف کرده اید پیمایش کنید و حرفهای ی موجود را با حرف ی مخصوص و مشخص شده ( توسط کد اسکی) تعویض کنید و سپس در بانکتان ذخیره کنید و در هنگام جستجو هم برعکس .
البته اگر بانکتان در sql باشد با انتخاب Collation مناسب (Arabic_CI_AS) فکر کنم مشکتان حل شود و یک موضوع دیگر هم این که اگر ذخیره و جستجوی اطلاعات در یک سیستم انجام شود مشکلی وجود نخواهد دشات تازمانی که ویندوز آن تعویض شود .
نقل قول: مشکل در جستجو با حرف (ی)
سلام دوستان
برای رفع این مشکل در همه ی فرم های پروژتان keypreview = true قرار دهید و کد زیر را در رویداد keypress فرمتان اضافه کنید تا هم در زمان ثبت کردن اطلاعات و هم در زمان جستجو و کلاً در همه ی زمانها وقتی ی و ک عربی وارد کرد به ی و ک فارسی تبدیل شود و وارد بانک شود
در vb:
If e.KeyChar = "ي"Then
e.KeyChar = "ی"
EndIf
If e.KeyChar = "ك"Then
e.KeyChar = "ک"
EndIf
در C#
if (e.KeyChar == 'ي') e.KeyChar = 'ی';
if (e.KeyChar == 'ك') e.KeyChar = 'ک';
من این روش را استفاده کردم مشکلم بر طرف شد
دوستان اگر روش بهتری دارند بفرمایند :لبخندساده:
نقل قول: مشکل در جستجو با حرف (ی)
مرسی از جوابتون دوست عزیز
میشه بیشتر توضیح بدید دقیقا این keypreview رو کجا true کنم >
نقل قول: مشکل در جستجو با حرف (ی)
دوست عزیز من یادمه دز دیتابیس از چنین چیزی Arabic_CI_AS استفاده می کردیم ولی کجاشو یادم نیست اگه میشه یه توضیح بدید که این Collationو باید به کجای دیتا بیس alter کنم . ضمن اینکه اگر بشه با یه مثال توضیح بدید خیلی ممنون میشم .
نقل قول: مشکل در جستجو با حرف (ی)
سلام دوست عزيز
براي true كردن keypreview فقط كافي است كه فرم خود را انتخاب كنيد و در پنجرهي مشخصات فرم keypreview را پيدا كرده و مقدار آن را برابر true قرار دهيد
و يا در رويداد فرم لود فرمتان form_load مد زير را بنويسيد:
Me.KeyPreview = True
نقل قول: مشکل در جستجو با حرف (ی)
نقل قول:
نوشته شده توسط
mahyar-m
دوست عزیز من یادمه دز دیتابیس از چنین چیزی Arabic_CI_AS استفاده می کردیم ولی کجاشو یادم نیست اگه میشه یه توضیح بدید که این Collationو باید به کجای دیتا بیس alter کنم . ضمن اینکه اگر بشه با یه مثال توضیح بدید خیلی ممنون میشم .
دوست عزیز کافی است در محیط sql managment روی نام دیتابیس راست کلیک کرده و properties را انتخاب کنبد از ستون سمت چپ options را انتخاب کنید و در موارد ظاهر شده در سمت راست میتوانید حالت Arabic_CI_AS را انتخاب کنید
نقل قول: مشکل در جستجو با حرف (ی)
نقل قول:
نوشته شده توسط
rnm123
البته اگر بانکتان در sql باشد با انتخاب Collation مناسب (Arabic_CI_AS) فکر کنم مشکتان حل شود و یک موضوع دیگر هم این که اگر ذخیره و جستجوی اطلاعات در یک سیستم انجام شود مشکلی وجود نخواهد دشات تازمانی که ویندوز آن تعویض شود .
تغییر Collation نمیتواند این مشکل را حل کند. Collation روی مسائلی مثل نحوه سورتینگ (order by) و رفتار بعضی توابع استرینگی داخل خود SQL تاثیر میگذارد.
همه راه حلهای ارائه شده مشکل جستجو را حل میکنند ولی راه حل جامع آن استفاده از «جستجوی هم ارز» است. این روش جستجو در متون «یونیکد» به خوبی توضیح داده شدهاند و منظور از آن این است که در جستجو بین حالات مختلف حرف «ی» تفاوتی قائل نشویم. مثلا همه حروف «ی، ي، ئ، ى» که چهار کد یونیکد متفاوت دارند یکی در نظر گرفته شوند. به عنوان مثال دیگر میتوان «ک، ك» که اولی فارسی و دومی عربی است را عنوان کرد. اگر کمی دقت کنید جستجوی هم ارز در گوگل به خوبی استفاده میشود. در گوگل فرقی ندارد که به دنبال «ایرانی» بگردید یا «ايراني»، گوگل همه نتایج مشابه را به شما نشان میدهد.
نقل قول: مشکل در جستجو با حرف (ی)
دوستان عزیز از همتون ممنونم ولی مشکل من هنوز حل نشده !!!
من هم از colltion arabic استفاده کردم هم از جایگزینی اما متاسفانه بازم جواب نداد تو هر ویندوزی هم که بگین چک کردم بازم نشد که بگیم مشکل از فارسی ساز باشه یا از ویندوز . نمیدونم باید چی کار کنم .
میشه دز مورد جستجوی هم ارز بیشتر توضیح بدید یا حداقل یه منبعی یا تیکه کدی یا سمپلی چیزی بدین .
خیلی ممنون از همتون که وقت میذارین و پاسخ سئوال من رو میدید .
نقل قول: مشکل در جستجو با حرف (ی)
نقل قول:
نوشته شده توسط
mahyar-m
دوستان عزیز از همتون ممنونم ولی مشکل من هنوز حل نشده !!!
من هم از colltion arabic استفاده کردم هم از جایگزینی اما متاسفانه بازم جواب نداد تو هر ویندوزی هم که بگین چک کردم بازم نشد که بگیم مشکل از فارسی ساز باشه یا از ویندوز . نمیدونم باید چی کار کنم .
میشه دز مورد جستجوی هم ارز بیشتر توضیح بدید یا حداقل یه منبعی یا تیکه کدی یا سمپلی چیزی بدین .
خیلی ممنون از همتون که وقت میذارین و پاسخ سئوال من رو میدید .
سلام دوست عزیز
توی كدی كه نوشتی، اگه بدین صورت عمل كنی، ایشالا مشكلت حل میشه:
where sabt.family like N'%" + textBoxX86.Text + "%'
با تشكر از آقای مداح
موفق باشید.
نقل قول: مشکل در جستجو با حرف (ی)
نقل قول:
نوشته شده توسط
mahyar-m
من هم از colltion arabic استفاده کردم هم از جایگزینی اما متاسفانه بازم جواب نداد تو هر ویندوزی هم که بگین چک کردم بازم نشد که بگیم مشکل از فارسی ساز باشه یا از ویندوز . نمیدونم باید چی کار کنم .
بهتره کارتون را دیباگ کنید. هم برنامه سیشارپ را و هم Queryهای ارسالی به SQL Server را. برای دیباگ برنامه دات نت ببینید در هر مرحل چه کاراکتری در متغیرها ذخیره، دریافت یا ارسال میشه. برای Queryها هم از SQL Server Profiler استفاده کنید.
خود من در یک موقعیت مشابه برای آنکه بفهمم هر کاراکتری دققیقا کدام حرف یونیکد است، کد اسکی و هگز آن چیست، شکل آن در فونتهای مختلف چیست و اسم رسمی آن در یونیکد چیست مجبور شدم یک برنامه ریزه میزه بنویسم. ممکنه این برنامه هم به دردت بخوره. آدرسش اینه: http://fardis.codeplex.com/
-------
نقل قول:
نوشته شده توسط
mahyar-m
میشه دز مورد جستجوی هم ارز بیشتر توضیح بدید یا حداقل یه منبعی یا تیکه کدی یا سمپلی چیزی بدین .
پیاده سازی جستجوی هم ارز کار سادهای نیست. برای این کار معمولا از کتابخانههایی که گروههای خاصی نوشتهاند استفاده میشود. و بعید میدانم که فعلا چیزی برای زبان فارسی ایجاد شده باشد.
نقل قول: مشکل در جستجو با حرف (ی)
نقل قول:
نوشته شده توسط
mahyar-m
دوستان عزیز از همتون ممنونم ولی مشکل من هنوز حل نشده !!!
دوست شما باید تمام ی و ک هایی که در بانک به زبان عربی ثبت شده است را به ی و ک فارسی جایگزین کنید و با اون کدی که گفتم در رویداد keypress بنویسید مشکلتان حل می شود
نقل قول: مشکل در جستجو با حرف (ی)
در مطلب لینک زیر، توضیحاتی درباره یکسان سازی حروف ی و ک (فارسی و عربی) و نحوه جستجوی صحیح کلمه یا عبارت، به طوری که همه حروف ی و ک را دربرگیرد ... وجود دارد.
امیدوارم مفید واقع شود.
http://www.eslamifar.com/index.php/archives/88
با استفاده از مطلب مندرج در سایت خودم ... دیگر نیازی به یکسان سازی ی و ک در بانک اطلاعاتی نیست ...
خودم خیلی دنبال این موضوع گشتم تا به اینجا رسیدم ... به نظرم که این تنها راه حل برای جستجو در بانک اطلاعاتی است.
خوشحال میشم نظر شما رو هم بدونم تا به عنوان یک تازه کار از تجربیات دیگران هم استفاده کنم.
نقل قول: مشکل در جستجو با حرف (ی)
سلام دوست من،
در تکمیل پاسخ دوستان اینجا رو هم ببین.
http://vahidnasiri.blogspot.com/2009...g-post_13.html
کاملترین روش برای این مشکل هست که تا حالا دیدم.
موفق باشی
نقل قول: مشکل در جستجو با حرف (ی)
نقل قول:
نوشته شده توسط
mn_zandy63
دوست عزیز ... مطلب شما رو قبلا خونده بودم ... مطمئنا این هم یک روش برای یکسان سازی حروف در دیتابیس می باشد که هنگام جستجو نیز حروف همانند سازی می شوند و مشکلی برای جستجو به وجود نمی آید ... ولی کدی که من در سایتم گذاشتم فرقی نمی کنه که با چه حروف ی و ک در دیتابیس یا در عبارت جستجو، مواجه شود .... به هر حال اگر بشه کدی که شما در سایتتون گذاشتید به صورت اتوماتیک هنگام Insert و یا update عمل کنه خیلی بهتره ...
موفق باشید.
نقل قول: مشکل در جستجو با حرف (ی)
نقل قول:
نوشته شده توسط
pardeew
دوست عزیز ... مطلب شما رو قبلا خونده بودم ... مطمئنا این هم یک روش برای یکسان سازی حروف در دیتابیس می باشد که هنگام جستجو نیز حروف همانند سازی می شوند و مشکلی برای جستجو به وجود نمی آید ... ولی کدی که من در سایتم گذاشتم فرقی نمی کنه که با چه حروف ی و ک در دیتابیس یا در عبارت جستجو، مواجه شود .... به هر حال اگر بشه کدی که شما در سایتتون گذاشتید به صورت اتوماتیک هنگام Insert و یا update عمل کنه خیلی بهتره ...
موفق باشید.
سلام دوست من
البته این آدرس، آدرس سایت بنده نیست.
اینجا دو تا رویکرد متفاوت هست.
اول اینکه موقع درج اطلاعات داخل دیتابیس اجازه درج ی و ک متفاوت ندی و عمری رو آسوده بخوابی.
دوم اینکه موقع جستجو هر دو تا رو جستجو کنی.
البته شما ممکنه نظرت متفاوت باشه، اما به نظر من روش اول بهتره و اصلی ترین دلیلم هم اینه که رعایت مورد اول برام ساده تره. ;)
یعنی موقع درج، ی و ک رو یکسان کنی که چند خط اول این صفحه که لینکش رو گذاشتم به همین مورد پرداخته.
در این صورت دیگه نیازی نیست موقع جستجو نگران تفاوت حروف باشیم.
بعد از اون این بحث پیش میاد که حالا اومدیم و تا الآن که این مورد رو دقت نکرده بودیم یه سری ی و ک متفاوت داخل دیتابیس داریم. در این صورت با کدی که در ادامه متن توضیح داده شده میتونی کل ی و ک های موجود رو اصلاح کنی.
البته به نظر من روش شما برای کسی که رویکرد دوم رو انتخاب میکنه، روش زیبایی هست.
موفق باشی
نقل قول: مشکل در جستجو با حرف (ی)
- در هنگام مقایسه در دستورات از N استفاده شود. مانند
select * from student where name = N'علي'
نقل قول: مشکل در جستجو با حرف (ی)
با سلام و تشکر از جوابتان
من هم این مشکل رو دارم فکر کنم کدی که در بالا نوشتید بصورت ذیل صحیح می باشد یعنی ما حرف ی و ک را از همان ابتدا تبدیل به عربی بکنیم و در موقع جستجو نیز بدنبال يو ك عربی باشیم.من این حالت رو انتخاب کردم و جواب گرفتم. با تشکر
سعید.
if (e.KeyChar == 'ی') e.KeyChar = 'ي';
if (e.KeyChar == 'ک') e.KeyChar = 'ك';
نقل قول: مشکل در جستجو با حرف (ی)
با سلام خدمت دوستان عزیز
من اطلاعاتم رو از فایل اکسل مخونم و به صورت دستی اطلاعات وارد نمیشن. اینجا باید چه کنم؟
نقل قول: مشکل در جستجو با حرف (ی)
سلام مشکل به راحتی و صد درصد قابل حل است فقط نکته ای که اینجانب به آن ایمان دارم این است که مهندسین مایکروسافت هیچ راه غیر قابل حلی برایشان نیست و هیچگاه برنامه نویسی را به حدی سخت نمی کنند که کاربر بخواهد ابتدا Replace کند بعد یه کاردیگه و بعد ..........
راه حل به این شکل است که دقیقا قبل از like از حرف N استفاده کنید
مثال
SELECT * FROM tbl WHERE col LIKE N'%ی%'
نقل قول: مشکل در جستجو با حرف (ی)
سلام
مشکل من با حرف ی و ي حل شده.
میگم شاید به درد کسی خورد :چشمک:
این راه حل ربطی به حروف ک و ك نداره و جواب نمیده.
فیلدی که میخواید عملگر LIKE رو روش اعمال کنید به NCHAR تبدیل کنید:
مقدار سمت راست عملگر LIKE رو تبدیل کنید یا نه فرقی نمیکنه. اولش N بذارید یا نذارید هم فرقی نمیکنه.
use [Statistics]
go
SELECT
tblPersonnels.ID, tblPersonnels.fldYeganID, tblYegans.fldName AS fldYeganName, tblPersonnels.fldPersNo,
tblPersonnels.fldGrade, tblPersonnels.fldName, tblPersonnels.fldFamily,
tblPersonnels.fldDescription
FROM tblPersonnels LEFT OUTER JOIN tblYegans ON tblPersonnels.fldYeganID = tblYegans.ID
WHERE
CAST(tblPersonnels.fldGrade + ' ' + tblPersonnels.fldName + ' ' + tblPersonnels.fldFamily AS VARCHAR)
LIKE '%ی%'
خروجیش شامل مقادیر دارای «ی» و «ي» همزمان خواهد بود :)
ضمنا من همیشه توی طراحی جدول هام برای فیلدهای رشته ای، نوع nvarchar(max) استفاده می کنم و برای nchar و text هیچ آزمایشی انجام ندادم.
نقل قول: مشکل در جستجو با حرف (ی)
سلام ممنونم مشکل من حل شد فقط نکته ای که در این کد باید رعایت شود این است که بین حرف N و علامت ' فاصله نباشد.
نقل قول: مشکل در جستجو با حرف (ی)
نقل قول:
نوشته شده توسط
newgoldenman
سلام دوست عزیز
توی كدی كه نوشتی، اگه بدین صورت عمل كنی، ایشالا مشكلت حل میشه:
where sabt.family like N'%" + textBoxX86.Text + "%'
با تشكر از آقای مداح
موفق باشید.
سلام ممنونم مشکل من حل شد فقط نکته ای که در این کد باید رعایت شود این است که بین حرف N و علامت ' فاصله نباشد.