دسته بندی ها
19:16 1399/08/23

عدم نمایش درست متن های فارسی در view source

مشخصات سوال کننده :
کاربر : hosseinfullstack     امتیاز کاربر : 58     رتبه کاربر : 16
دسته بندی : Asp.net Core Html Css Asp.net Mvc

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

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

مشکل عدم نمایش درست متن های فارسی در view source می تواند به یکی از دلایل زیر باشد:

  • عدم صحیح بودن کدگذاری (encoding) در دیتابیس: مطمین شوید که داده های فارسی در دیتابیس با کدگذاری UTF-8 ذخیره می شوند.
  • تنظیمات کدگذاری در پروژه ASP.NET Core: اطمینان حاصل کنید که در پیکربندی پروژه، کدگذاری UTF-8 به طور صحیح تنظیم شده است.

در خصوص سوالات شما:

  1. به طور کلی، اگر متن ها به درستی ذخیره نشوند و به صورت ناخوانا در بیایند، این می تواند مشکلاتی در آینده ایجاد کند.
  2. ایراد اصلی ممکن است در نحوه ذخیره سازی داده ها در دیتابیس یا نحوه ارسال آن ها به مرورگر باشد. بنابراین بررسی و اطمینان از صحیح بودن کدگذاری در هر دو مرحله بسیار مهم است.

در صورت نیاز به مثال هایی از نحوه تنظیم کدگذاری یا بررسی تنظیمات، می توانید سوالات بیشتری بپرسید.

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

سلام و درود

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

البته توی هر زبان برنامه نویسی برای این کار تنظیماتی داره. مثلا اگر سایتی به PHP نوشته شده باشه شما به راحتی در قسمت View Source میتونید کاراکترهای فارسی رو ببینید. ولی در Asp.net Core به صورت پیش فرض تنظیم شده که فقط En رو امن شناسایی کنه. البته این موضوع هیچ مشکلی برای سایت شما یا موتورهای جستجو ایجاد نمیکنه و خود طراحان سایت هم ترجیح میدن به همین صورت باشه چون بسیاری از اطلاعات سایت محفوظ میمونه.

 

توی Asp.net Core می تونید با اضافه کردن کد زیر به کلاس Startup.cs و در متد ConfigureService این قابلیت رو بردارید.

services.AddSingleton<HtmlEncoder>(
  HtmlEncoder.Create(allowedRanges: new[] { UnicodeRanges.BasicLatin,
                                            UnicodeRanges.Arabic }));

 

به این پاسخ امتیاز بدهید    2
امتیاز: 1664 رتبه: 1
1 نظر
hosseinfullstack : استاد عزیز بسیار ممنون از توضیحات کامل و جامع شما. به حق که در حوزه برنامه نویسی شماره یک هستید. خیلی دنبال جوابش گشتم و از خیلی ها پرسیدم ولی ندونستن

امتیاز کاربر : 58   رتبه کاربر : 16   تاریخ ثبت : 04:13 1399/08/24
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود