PDA

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



behrooz69
شنبه 24 شهریور 1397, 08:48 صبح
دوستان سلام

در پروژه من ، یه سری اطلاعات در دیتابیس Sql ما وارد شده مثل اسم شهر .

یه دکمه داریم ، یه تکست باکس ، یه گرید ویو

کاربر اسم شهر رو وارد میکنه ، و اطلاعات جستجو شده توی گرید ویو نشون میده .

مشکل اونجاییه که اسم شهرهایی که توش از ی و ک استفاده شده به مشکل بر میخوره و چیزی رو نمایش نمیده مثل یزد ، یاسوج ، کرمان

ولی مشهد ، گرگان و ... نشون میده و به درستی کار میکنه .

توی دیتابیس Sql server هم فارسی رو collection رو روی persian میذارم ، ولی بازم هیچ تاثیری نداره . اطلاعات شهرها از قبل وارد شده توی دیتابیس .

دوتا نکته هم این وسط هست .

برنامه قابلیت اینو داره که اطلاعات جدید وارد بشه و یا ویرایش بشه .

1 - فرض کنید برنامه تحت شبکه هستش ، و قراره 30 نفر ازش استفاده کنن من باید رو سیستم همه برم و کیبوردشونو فارسی کنم که عربی تایپ نکنه که بعدا تو سرچ مشکل نخوریم !؟

2- اطلاعات از قبل وارد شده ، قبلی هارو مثلا با اسکریپت درست کنیم ، بعدا چی !

خلاصه بگم راح حل قطعی نمایش و اصلاح کلمه فارسی و عربی در برنامه نوشته شده و Sql چیه که تا اخر نیاز به رسیدگی نباشه

barnamenevisjavan
شنبه 24 شهریور 1397, 21:21 عصر
مشکل اینه برخی کیبوردشون عربی هست پس ی و ک بصورت عربی نوشته شده و برخی هم فارسی که بصورت استاندارد تایپ شده، 2 تا کار باید بکنی
1 اینکه با یه کوئری تو دیتابیس sql حروف ی عربی رو پیدا کنی و با ی فارسی Replace کنی یکم سرچ کنی دستور موردنظر رو پیدا میکنی
2 موقع ویرایش و ثبت اطلاعات با یه شرط کوچیک تکسباک هات رو چک میکنی اگر شامل حروف عربی بود با حروف مناسب فارسی جایگزین بشه

behrooz69
یک شنبه 25 شهریور 1397, 10:33 صبح
مشکل اینه برخی کیبوردشون عربی هست پس ی و ک بصورت عربی نوشته شده و برخی هم فارسی که بصورت استاندارد تایپ شده، 2 تا کار باید بکنی
1 اینکه با یه کوئری تو دیتابیس sql حروف ی عربی رو پیدا کنی و با ی فارسی Replace کنی یکم سرچ کنی دستور موردنظر رو پیدا میکنی
2 موقع ویرایش و ثبت اطلاعات با یه شرط کوچیک تکسباک هات رو چک میکنی اگر شامل حروف عربی بود با حروف مناسب فارسی جایگزین بشه


ممنون از جوابت ، ولی طرحه رو میدونم قربونتون برم ، کدش مهمه

محمد آشتیانی
یک شنبه 25 شهریور 1397, 11:30 صبح
سلام
این صفحه را مطالعه بفرمائید
https://www.dotnettips.info/post/90/%D9%85%D8%B4%DA%A9%D9%84-%DB%8C-%D9%88-%DA%A9-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D9%88-%D8%B9%D8%B1%D8%A8%DB%8C-%D8%AF%D8%B1-%DB%8C%DA%A9-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%A7%D8%B3-%DA%A9%DB%8C%D9%88%D8%A7%D9%84-%D8%B3%D8%B1%D9%88%D8%B1

شما دو مرحله رو باید انجام بدید
1- اصلاح دیتایی که در حال حاضر در دیتابیس دارید
2- تغییر رویه ورود دیتا از طریق چک کردن و اصلاح ورودی ها

هر دو مورد فوق رو در آدرسی که دادم توضیح دادن.


موفق باشید

محمد آشتیانی
یک شنبه 25 شهریور 1397, 13:20 عصر
البته صفحه فوق ، کاراکترهای فارسی رو به عربی تبدیل میکنه ، به نظر من بهتره برعکسش رو انجام بدید ، بنابراین کوئری موجود در همون آدرس رو اصلاح کردم


--اسکریپتی برای یک دست سازی ی و ک در تمامی رکوردهای تمامی جداول دیتابیس جاری
-- اسکریپت زیر ی و ک عربی را به فارسی تبدیل می‌کند
-- در صورت نیاز به حالت عکس ، جای مقادیر عددی یونیکد را تعویض نمائید


USE TestDB;


DECLARE @Table NVARCHAR(MAX),
@Col NVARCHAR(MAX)


DECLARE Table_Cursor CURSOR
FOR
--پیدا کردن تمام فیلدهای متنی تمام جداول دیتابیس جاری
SELECT a.name, --table
b.name --col
FROM sysobjects a,
syscolumns b
WHERE a.id = b.id
AND a.xtype = 'u' --User table
AND (
b.xtype = 99 --ntext
OR b.xtype = 35 -- text
OR b.xtype = 231 --nvarchar
OR b.xtype = 167 --varchar
OR b.xtype = 175 --char
OR b.xtype = 239 --nchar
)


OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @Table,@Col
WHILE (@@FETCH_STATUS = 0)
BEGIN
EXEC (
'update [' + @Table + '] set [' + @Col +
']= REPLACE(REPLACE(CAST([' + @Col +
'] as nvarchar(max)) , NCHAR(1610), NCHAR(1740)),NCHAR(1603),NCHAR(1705)) '
)


FETCH NEXT FROM Table_Cursor INTO @Table,@Col
END CLOSE Table_Cursor DEALLOCATE Table_Cursor



متدی که رشته های با کاراکتر عربی رو هم به کاراکترهای فارسی تبدیل میکنه (vb.net)

Public Function SafeFarsiString(input As String) As String
Return input.Replace("ﻱ", "ی").Replace("ك", "ک")
End Function

behrooz69
دوشنبه 26 شهریور 1397, 08:02 صبح
از پیشنهاد و راهنمایی همه دوستان خصوصا جناب آشتیانی گل

مشکل با اضافه کردن N بر مبنای National و خواندن و فهموندن Unicode حل شد . ساده تر بگم

SELECT * FROM Table WHERE Name = N'" TextBox1.Text "'




ممنونم از دوستان ، اینجوری تو سرچ و فرخوانی تو دیتا گرید خودم مشکلی احساس نمیکنم

Hossis
چهارشنبه 04 مهر 1397, 16:30 عصر
متدی که رشته های با کاراکتر عربی رو هم به کاراکترهای فارسی تبدیل میکنه (vb.net)


1
2
3
4
Public Function SafeFarsiString(input As String) As String
Return input.Replace("ﻱ", "ی").Replace("ك", "ک")
End Function





من از همین متد استفاده می کنم
ولی این متد، متن فارسی رو عربی می کنه و متد برعکسش رو هم میشه نوشت.
اضافه کردن N برای تک تک کد ها درد سر داره، و فکر کنم همین متد رو بنویسیم راحت تره