دسته بندی ها
16:48 1399/12/23

رفع مشکل اعداد فارسی در Asp.net Core هنگام ورود اطلاعات

مشخصات سوال کننده :
کاربر : Programmer     امتیاز کاربر : 27     رتبه کاربر : 26
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 4230
هوش مصنوعی

پاسخ هوش مصنوعی

برای رفع مشکل ورود اعداد فارسی در ASP.NET Core، می توانید مراحل زیر را دنبال کنید:

1. **تنظیمات در مدل:** اطمینان حاصل کنید که مدل شما قادر به پردازش متن به زبان های مختلف باشد. از نوع `string` برای ورودی ها استفاده نمایید.

2. **فرمتینگ ورودی:** در سمت کلاینت، می توانید قبل از ارسال داده ها به سرور، مطمین شوید که ورودی ها به زبان و فرمت صحیح تبدیل شوند. برای این کار می توانید از JavaScript استفاده کنید.

کد جاوا اسکریپت برای تبدیل اعداد فارسی به انگلیسی:


function convertToEnglishNumbers(input) {
    const persianToEnglishNumbers = {
        '0': '0',
        '1': '1',
        '2': '2',
        '3': '3',
        '4': '4',
        '5': '5',
        '6': '6',
        '7': '7',
        '8': '8',
        '9': '9',
    };
    
    return input.split('').map(char => persianToEnglishNumbers[char] || char).join('');
}

document.getElementById('yourInputField').addEventListener('input', function(event) {
    this.value = convertToEnglishNumbers(this.value);
});

3. **تنظیمات در سرور:** در صورتی که نیاز دارید در سمت سرور نیز این اعداد را پردازش کنید، می توانید حین دریافت اطلاعات از کاربر، آن ها را تبدیل کنید. در کنترلر می توانید از متد زیر استفاده کنید:


public string ConvertPersianToEnglish(string input) {
    var conversions = new Dictionary {
        { '0', '0' }, { '1', '1' }, { '2', '2' }, { '3', '3' },
        { '4', '4' }, { '5', '5' }, { '6', '6' }, { '7', '7' },
        { '8', '8' }, { '9', '9' }
    };
    
    return new string(input.Select(c => conversions.ContainsKey(c) ? conversions[c] : c).ToArray());
}

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

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 19:46 1399/12/23

اطلاعات شما در دیتابیس به صورت انگلیسی ذخیره شده احتمالا. اعداد به صورت فارسی و انگلیسی از نظر Unicode و باینری تفاوتهایی دارن. شما بهتره یک استاندارد برای پروژه خودتون داشته باشید. راه حل صحیح این هست که همه اعداد رو در هر جایی تبدیل به انگلیسی کنید و بعد به سمت سرور یا دیتابیس بفرستید. یعنی وقتی کاربری اعدادی رو وارد می کنه قبل از اینکه عملیاتی روی این اعداد انجام بشه اونها رو به انگلیسی تبدیل کنید و بعد به سمت دیتابیس بفرستید.

برای این منظور از تابع زیر که وظیفه تبدیل اعداد فارسی به انگلیسی داره استفاده کنید.

public static class ConvertArabicNumberToEnglish
{
   public static string toEnglishNumber(string input)
   {
       string EnglishNumbers = "";
       for (int i = 0; i < input.Length; i++)
          {
              if (Char.IsDigit(input[i]))
                {
                    EnglishNumbers += char.GetNumericValue(input, i);
                }
                else
                {
                    EnglishNumbers += input[i].ToString();
                }
           }
        return EnglishNumbers;
   }
}

نحوه استفاده از این تابع 

ConvertArabicNumberToEnglish.toEnglishNumber("٠٩٩٠٢١٢");

//خروجی
0990212

 

در این لینک هم قبلا این سوال پرسیده شده بود و پاسخ داشت.

تبدیل اعداد فارسی به انگلیسی در Asp.net و سی شارپ

ویرایش شده در شنبه 23 اسفند 1399 ساعت 19:46:49
به این پاسخ امتیاز بدهید    0
امتیاز: 1664 رتبه: 1
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود