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

نام تاپیک: مشکل کیبرد در ثبت در دیتابیس

  1. #1

    مشکل کیبرد در ثبت در دیتابیس

    سلام
    یه مشکلی برام پیش اومده تو برنامه ای که نوشتم کاربر وقتی توی دیتابیس چیزی رو ثبت میکنه توی یک سیستم دیگه نمیتونه جستجو کنه
    بعد از کلی فهمیدم که کیبردش عربی هست و مثلا ی رو ي ثبت میکنه
    و توی سیستم دیگه که کیبردش فارسی هست دیگه نمیشه جستجو کرد مقادیری که ثبت شده
    دیتابیس utf8_persian_ci هستش تو برنامه هم از utf8 توی کانکشن استفاده کردم
    راه حلی دارین که بشه این مشکل رو حل کرد؟

  2. #2
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: مشکل کیبرد در ثبت در دیتابیس

    برای چنین مسائلی معمولا راه حل اینه همه کاراکترهای معادل اما متفاوت رو به یک کاراکتر تبدیل کنید هم تو دیتابیس هم تو کوئری که از فرد گرفته میشه.
    مثلا تفاوت هایی که وجود داره اعداد است. اعداد استاندارد انگلیسی هست، اعداد فارسی و اعداد عربی. که بهتره همشون به یه چیز تبدیل بشن.
    در مورد حروف هم حروفی مثل "ی" و "ي" و "ک" و "ك" رو باید به یک کاراکتر تبدیل کنید. هر چند ممکنه بعضیا "ه" و "ة" رو هم جا به جا بنویسن ولی احتمالش خیلی کمه و این دو تا دو حرف جداگونه هستند. ولی اون دو مثال قبلی رسم الخط متفاوتی هستند.

  3. #3

    نقل قول: مشکل کیبرد در ثبت در دیتابیس

    مشکل اینجاست که فقط حرف مثلا س رو هم با کیبرد عربی مینویسه باز اون مشکل پابرجاست هر حرفی با اون سیستم مینویسه توی این یکیا سرچ نمیشه
    چون کلی دیتا هم باهاش ثبت کرده نمیشه کل دیتابیس رو پاک کرد که چاره کار چیه الان؟

  4. #4

    نقل قول: مشکل کیبرد در ثبت در دیتابیس

    البته این کد رو پیدا کردم






    update tbl_primarysubstance set primarysubstances=REPLACE(primarysubstances,'ي',N 'ی')
    update tbl_primarysubstance set primarysubstances=REPLACE(primarysubstances,'ك',N 'ک')



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

  5. #5
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: مشکل کیبرد در ثبت در دیتابیس

    دستی یا کد باید بنویسید و کل دیتابیس رو آپدیت کنید. راه دیگه ای به ذهنم نمیرسه
    فقط بهتره برید تمام حروف رو با اون کیبورد بنویسید و کد هر کدوم رو بگیرید و با یک کیبورد فارسی رو همین کار رو انجام بدید تا ببینید کدوما کدشون متفاوته. حرف "س" متفاوت نیست، ولی خب باز چک کنید شاید مشکل یه جای دیگست. از جدول این سایت هم میتونید استفاده کنید: https://unicode-table.com/en/

    برای کدهای عربی (که شامل عربی، فارسی، کردی و... میشه): https://unicode-table.com/en/blocks/arabic/
    برای کدهای عربی تکمیلی (که بعید میدونم به کارتون بیاد): https://unicode-table.com/en/blocks/arabic-supplement/
    برای کدهای عربی باز توسعه داده شده (که بازم به کار نمیاد): https://unicode-table.com/en/blocks/arabic-extended-a/

  6. #6

    نقل قول: مشکل کیبرد در ثبت در دیتابیس

    ممنون از وقتی که گذاشتی یه سوال دیگه هم دارم متوجه نشدم چطوری باید کاری کنم کاربر اگه توی تکست باکس ك نوشت خودش درست بشه و تبدیل به ک بشه!
    البته این کد رو پیدا کردم ولی نفهمیدم چطوری ازش استفاده کنم

    public String SafeFarsiStr(String input)
    {
    return input.replace("ي", "ی").replace("ك", "ک");
    }


  7. #7
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: مشکل کیبرد در ثبت در دیتابیس

    اینکه بخوای نوشته تو textbox درست بشه ممکنه کارت رو سخت کنه و هندل کردنش معمولا یه سری مشکلات جزئی درست میکنه (میشه مثلا رو keyrelease یک listener بذاری و هی رشته قبلی رو حذف و رشته تصحیح شده تو textbox جایگزین کنی ولی اینکار رو توصیه نمیکنم). بذار هر چی خواست بنویسه، وقتی میخوای تو دیتابیس جستجو کنی با این تابع رشته تصحیح شده رو به جای رشته اصلی در دیتابیس جستجو کن.

  8. #8

    نقل قول: مشکل کیبرد در ثبت در دیتابیس

    مثل همین دستور

    update tbl_primarysubstance set primarysubstances=REPLACE(primarysubstances,'ي',N 'ی')
    update tbl_primarysubstance set primarysubstances=REPLACE(primarysubstances,'ك',N 'ک')

    دستوری توی جاوا نیست که بگم وقتی jtext روش KeyReleased میشه اگه "ي" وارد شده بود تبدیل بشه به "ی" و اگه "ك" وارد شده بود تبدیل بشه به "ک" البته بدون اینکه متن نوشته شده خراب بشه فقط این 2 تا حرف تغییر پیدا کنن؟

  9. #9

    نقل قول: مشکل کیبرد در ثبت در دیتابیس

    نقل قول نوشته شده توسط vahid-p مشاهده تاپیک
    اینکه بخوای نوشته تو textbox درست بشه ممکنه کارت رو سخت کنه و هندل کردنش معمولا یه سری مشکلات جزئی درست میکنه (میشه مثلا رو keyrelease یک listener بذاری و هی رشته قبلی رو حذف و رشته تصحیح شده تو textbox جایگزین کنی ولی اینکار رو توصیه نمیکنم). بذار هر چی خواست بنویسه، وقتی میخوای تو دیتابیس جستجو کنی با این تابع رشته تصحیح شده رو به جای رشته اصلی در دیتابیس جستجو کن.
    آخه جدا از اینکه نمیدونم کلا باید چیکار کنم اینجوری باید هم توی ثبت هم توی ویرایش هم توی جستجو بیام اون حروف رو تبدیل کنم کار 3 برابر بیشتر نمیشه؟

  10. #10

    نقل قول: مشکل کیبرد در ثبت در دیتابیس

    این هم شاید بشه استفاده کرد


    private void txtsearchKeyReleased(java.awt.event.KeyEvent evt) {
    // TODO add your handling code here:
    String a = txtsearch.getText();
    String b = a.replace("ي", "ی");
    txtsearch.setText(b);

    String c = txtsearch.getText();
    String d = c.replace("ك", "ک");
    txtsearch.setText(d);
    }

    آخرین ویرایش به وسیله cnmeysam : دوشنبه 20 آذر 1396 در 16:57 عصر

تاپیک های مشابه

  1. مشکل UPDATE در دیتابیس
    نوشته شده توسط melika_ka در بخش مطالب مرتبط با بانکهای اطلاعاتی در VB6
    پاسخ: 13
    آخرین پست: دوشنبه 29 تیر 1388, 15:00 عصر
  2. مشکل سرچ در دیتابیس
    نوشته شده توسط h.alizadeh در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 0
    آخرین پست: جمعه 13 دی 1387, 20:37 عصر
  3. سوال: مشكل افزونگي در ديتابيس membership
    نوشته شده توسط aryaman در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: شنبه 06 مهر 1387, 22:05 عصر
  4. مشکل Space در دیتابیس Access
    نوشته شده توسط loads در بخش برنامه نویسی در 6 VB
    پاسخ: 4
    آخرین پست: دوشنبه 10 تیر 1387, 18:49 عصر
  5. مشکل فونت در دیتابیس فاکس پرو
    نوشته شده توسط jeniferxp در بخش گزارش سازی با Crystal Report
    پاسخ: 1
    آخرین پست: یک شنبه 14 بهمن 1386, 12:24 عصر

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

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