نمایش نتایج 1 تا 9 از 9

نام تاپیک: تشخیص ک عربی و فارسی ؟

  1. #1
    کاربر دائمی آواتار milad.biroonvand
    تاریخ عضویت
    تیر 1388
    محل زندگی
    تهران
    پست
    1,406

    Wink تشخیص ک عربی و فارسی ؟

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

  2. #2
    کاربر دائمی آواتار anooshiran
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    تهران anoosh_resha@yahoo.com
    پست
    576

    نقل قول: تشخیص ک عربی و فارسی ؟

    سلام دوست عزيز

    من يك مقاله راجب به اختلاف unicode هاي فارسي و عربي در اعداد نوشته ام. همين اختلاف در زمينه حروف نيز وجود دارد.

    شما بايد رنج unicode هاي عربي و فارسي را پيدا كنيد و سپس كنترل كنبد حروف وارد شده از كدام دسته unicode است.

  3. #3
    کاربر دائمی آواتار milad.biroonvand
    تاریخ عضویت
    تیر 1388
    محل زندگی
    تهران
    پست
    1,406

    Thumbs up نقل قول: تشخیص ک عربی و فارسی ؟

    اگه می تونی یه مقاله رو هم در زمینه حروف بزار . اون مقالتو خوندم جالب بود .

  4. #4
    کاربر دائمی آواتار ali.hojjati
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    کرج
    پست
    188

    نقل قول: تشخیص ک عربی و فارسی ؟

    نقل قول نوشته شده توسط anooshiran مشاهده تاپیک
    سلام دوست عزيز

    من يك مقاله راجب به اختلاف unicode هاي فارسي و عربي در اعداد نوشته ام. همين اختلاف در زمينه حروف نيز وجود دارد.

    شما بايد رنج unicode هاي عربي و فارسي را پيدا كنيد و سپس كنترل كنبد حروف وارد شده از كدام دسته unicode است.
    با سلام خددمت دوست گرامی
    منم این مشکل رو در جستجوی فایل هایی با کراکتر ک فارسی یا عربی - ی فارسی یا عربی در بین فایل ها در سرچ کردن دارم. لطفا راهنمایی کنید.

  5. #5
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059

    نقل قول: تشخیص ک عربی و فارسی ؟

    سلام
    من یک کار بسیار کامل در ضمینه حروف الفبای فارسی انجام دادم که اصلش برای نمایش متن فارسی در XNA بوده ولی میتواند مشکل این تاپیک را هم حل کند !
    به عنوان مثال این کد میتواند 18 نوع "الف" یا 25 نوع "ی" و... را تشخیص دهد و همه را واحد کند.

    خیلی ساده میتواند دو تابع به این dll اضافه کنم که مشکل مبحث جاری تاپیک را هم حل کند.
    - یک تابع برای مقایسه دو String فارسی در خود برنامه

    - یک تابع هم برای نرمال کردن کاراکترهای فارسی متن به کاراکترهای استاندارد زبان فارسی در یونیکد ...
    نتیجتاً اگر قبل از هر INSERT و UPDATE و SELECT-WHERE از تابع مذکور استفاده کنید نه دیگر مشکل "ی" های دو نقطه دار عربی را خواهید داشت و نه "ک" و سایر حروف...

    میتوان در چند روز آینده dll را در این جهت کامل کنم و لینک دانلود بدهم تا اگر کسی مایل بود استفاده کند.
    موفق باشید.

  6. #6
    کاربر دائمی آواتار milad.biroonvand
    تاریخ عضویت
    تیر 1388
    محل زندگی
    تهران
    پست
    1,406

    Cool نقل قول: تشخیص ک عربی و فارسی ؟

    منتظر شما هستیم. دوست عزیز

  7. #7
    کاربر دائمی آواتار Sub Zero
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    اهواز
    پست
    443

    نقل قول: تشخیص ک عربی و فارسی ؟

    من خودم اين مشكل رو به اين شكل حل كردم :
    ديتا بيسم رو تبديل به اكسل كردم توي اكسل يه Ctrl + H زدم و هر جا ك عربي بود رو به ك فارسي تبديل كردم و دوباره اكسل رو توي ديتا بيس import كردم . براي اين كار كافيه يه نمونه از ك عربي و يه نمونه از ك فارسي رو داشته باشي

  8. #8
    کاربر دائمی آواتار milad.biroonvand
    تاریخ عضویت
    تیر 1388
    محل زندگی
    تهران
    پست
    1,406

    Cool نقل قول: تشخیص ک عربی و فارسی ؟

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

  9. #9
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059

    نقل قول: تشخیص ک عربی و فارسی ؟

    سلام

    اصل مشکل شما در این تاپیک از این نقطه آغاز میشود که XP و Vista و Win7 ای که نصب کرده اید دستکاری شده !
    یعنی معمولاً شرکت داخلی CD یا DVD کرک شده چینی و روسی را برداشته و مثلاً آمده فارسی سازیش کند و خیلی میبخشید ولی گند زده !
    (سعی کنید ویندوزی نصب کنید که تاحد امکان دستکاری نشده باشد و نرم افزار و ابزار اضافه ای نداشته باشد و خودتان دستی در ControlPanel کیبورد فارسی اش را نصب کنید.)

    یا اینکه امکان دارد به جای نصب کیبورد فارسی با نماد Fa کیبورد عربی با نما Ar نصب شده باشد.

    همیشه و همواره کیبورد فارسی را از داخل خود ControlPanel استاندارد ویندوز نصب کنید.
    حروف "پ" و "ژ" هم امکان دارد با نوشتار کیبور قدیمی شما سازگار نباشد ولی ایرادی ندارد ...
    اگر کیبورد ویندوز را با خود ControlPanel دستکاری نشده مایکروسافت نصب کنید برای درج "ژ" باید "Shift+C" زده شود و "پ" هم کاراکتر "\" خواهد بود.

    ==============

    من دو تابعی که گفتم را به dll خودم اضافه کردم.
    باید ghnet.dll را به پروژه خود reference کنید ...

    --- تابع GHNet.Text.PersianText.Compare دو String را مقایسه میکند و اگر برابر باشند صفر برمیگرداند.

    --- تابع GHNet.Text.PersianText.ToPersianUnicode هم یک String ورودی را گرفته و تمام کاراکترهای الفبای فارسی را به کاراکترهای استاندارد کیبورد فارسی شده با خود XP و Vista و Win7 تبدیل میکند که این تبدیل را میتوان تبدیل استاندارد یونیکدی فارسی فرض کرد.

    تابع فوق به نوعی قاتل تمام حروف و علائم خاص عربی است همه حروف همزه دارد و نقطه زیاد در بالا و پایین دارد و... را با حروف استاندارد کیبورد فارسی تعویض میکند.

    باید مجدد اخطار کنم که تابع فوق کلیه حروف و علایم خاص فارسی و عربی نقطه زیاد و همزه دار را به حروف عادی تبدیل میکند.
    تنها اثتثنا در مورد "آ" ی با کلاه است که با کلاه و بدون کلاهش (!) صحیح حفظ خواهد شد و از بین نمیرود ولی سایر الفهای همزه دارد هم همه به الف عادی تبدیل میشوند.

    تابع فوق سایر حروف و علایم غیر فارسی را دست نخورده و صحیح حفظ خواهد کرد.

    =====

    دو تابع فوق در نوع خود با بهترین کدنویسی و بازدهی سرعتی نوشته شده اند و در آنها از کدهای unsafe برای پردازش استفاده شده و تا حد امکان سعی شده اصول سرعت بالای پردازش در آنها رعایت شود.

    ==============

    چطور می تونیم ک عربی یا ي عربی را از کی فارسی و ی فارسی تشخیص داد ؟ من یک تکس باکس دارم و خودم بصورت فارسی در بانک جملا را می نویسم ، حالامی خوام اون ها را با چیزی که کاربر وارد می کند مقایسه کنم ، ولی اگه زبان ویندوز کاربر نسخه عربی باشه ، اشتباه می شه ، حالا راه حل چیه . چطور می تونم رشته کاربر رو جستجو کنم ، اگر ک عربی بود تبدیل به ک فارسی بشه
    راه حل کامل و نهایی شما ان است که اول کل دیتابیس را بخوانید (یا DataReader و یا با DataSet) و کل اطلاعات String این جدول را با تابع ToPersianUnicode به متون استاندارد فارسی تبدیل کنید و تمام اطلاعات را مجدد Save کنید. (یا با Command و یا همان DataSet و DataAdapter)

    این عمل مشابه نرم افزاری و درون برنامه ای کاری است که کاربر Sub Zero در پست 7 گفتند و مشکل حروف و علایم ناهنجار داخل دیتابیس را رفع میکند.
    اینکار فقط کافی است یک بار انجام شود.
    (البته میتوانید امکانی در جایی در چندان در دسترس در برنامه جای دهید که بتوان در صورت صلاحدید با یک کلیک کل دیتابیس را با روش فوق بازتولید کرد و کاراکترهای ناهنجار را تصحیح کرد.)

    حالا مشکل من اینجاست ، که کاربر متن رو وارد می کنه ، من در بانک بصورت ک فارسی نوشتم ولی اگه کاربر ک عربی وارد کنه ، فکر می کنه که برنامه درست کار نمی کنه ، حالا اگه من در بانکم ک عربی وارد کنم ممکنه که کاربر ک فارسی وارد بکنه دوباره فکر می کنه که اشتباه وارد کرده .
    و اما برای مشکل آینده هم همانطور که در پست 5 گفتم، بهترین راه چاره ان است که تابع ToPersianUnicode را قبل از هر UPDATE و INSERT فراخوانی کنید.
    یعنی مثلاً به جای کد اولی در زیر کد دوم را بنویسید:

    Dim str1 As String = Me.PersianTextBox1.Text
    Dim str2 As String = GHNet.Text.PersianText.ToPersianUnicode(Me.Persian TextBox1.Text)

    اگر از کد پیشنهادی دوم در مبادی ورودی و یا قبل از تغییرات دیتابیس استفاده کنید، تضمین میکنید که امکان ندارد کاراکترهای ناهنجار وارد دیتابیس شوند و برنامه خودکار همه کاراکترهای غیر استاندارد را به معادل استاندارد آن جایگزین میکند.

    =====

    کد نمونه برای استفاده از دو تابع فوق:

    Dim str_farsi As String = "ی" & "ک" & "و"
    Dim str_arabic As String = "ﻱ" & "ݢ" & "ۋ"

    Dim str_farsi_2 As String = GHNet.Text.PersianText.ToPersianUnicode(str_arabic )

    System.Windows.Forms.MessageBox.Show( _
    If((String.Compare(str_farsi, str_arabic) = 0), "str_farsi = str_arabic", "str_farsi <> str_arabic"))

    System.Windows.Forms.MessageBox.Show( _
    If((GHNet.Text.PersianText.Compare(str_farsi, str_arabic) = 0), "str_farsi = str_arabic", "str_farsi <> str_arabic"))

    System.Windows.Forms.MessageBox.Show( _
    If((String.Compare(str_farsi, str_farsi_2) = 0), "str_farsi = str_farsi_2", "str_farsi <> str_farsi_2"))


    ==============

    این پکهای ریر ربطی به تاپیک فعلی ندارند ولی پوشه bin نشان حاوی آخرین نسخه این dll هستند.

    http://support.h02.ir/fwlink/?LinkId=1005415457
    http://support.h02.ir/fwlink/?LinkId=1001372507
    http://support.h02.ir/fwlink/?LinkId=1005350577
    http://support.h02.ir/fwlink/?LinkId=1002435777
    http://support.h02.ir/fwlink/?LinkId=1006193017

    (ضمنا در مورد حرف "ک" که مورد بحث تاپیک است، dll فوق توانایی شناسایی 14 نوع کاراکتر مختلف "ک" را دارد.)
    موفق باشید.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •