منع الإخراج الياباني ك HTML من مرجع الشرط الفعلي (راجع الأحرف الرقمية)

تاريخ إنشاء الصفحة :

وسط

استوديو مرئي
  • استوديو مرئي 2019
ASP.NET كور
  • 3.1 (صفحة الحلاقة، MVC)

اليابانية مرتبة ديناميكيا في البرنامج هو الإخراج كمرجع إلى الوضع الفعلي.

Index.cshtmlدعونا عرض تلك التي دخلت اليابانية مباشرة في وتلك التي إخراج اليابانية باستخدام ViewData على النحو التالي.

<!-- 省略 -->

<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>

<p>ここに固定文字列の日本語を表示させます。</p>
<p>@ViewData["Message"]</p>

على جانب البرنامج، تعيين اليابانية ViewData.

Index.cshtml.cs (لصفحات الحلاقة)

// 省略

public class IndexModel : PageModel
{
  // 省略

  public void OnGet()
  {
    ViewData["Message"] = "ViewData から日本語を表示させます。";
  }
}

.cs هومكونترولر (ل MVC)

// 省略

public class HomeController : Controller
{
  // 省略

  public IActionResult Index()
  {
    ViewData["Message"] = "ViewData から日本語を表示させます。";
  }
}

عند تشغيل التصحيح، يتم عرض كليهما باللغة اليابانية بشكل صحيح.

ومع ذلك، إذا نظرتم إلى مصدر الصفحة في مستعرض ويب، يمكنك أن ترى أن الإخراج الياباني في ViewData هو الإخراج مع مرجع في العالم الحقيقي (انظر الأحرف الرقمية).

المرجع الحقيقي (انظر الأحرف الرقمية) هو حرف بديل أبجدية رقمية يستخدم عندما تريد تمثيل أحرف Unicode في بيئة يمكنها معالجة الأحرف الأبجدية الرقمية فقط أو عرض لغات معينة فقط. على سبيل المثال، الحرف "أ" هو "&#x3042;" في مرجع الحالة الفعلية (راجع #x3042 حرفا). سيتم عرضها على أنها .

يقوم مستعرض ويب النموذجي بترميز الأحرف وعرضها بشكل صحيح حتى إذا كان html يحتوي على مراجع واقعية. غالبا ما يكون المستخدمون غير مدركين لمراجع الحالة الفعلية.

في الأساس ، يتم عرضه بشكل صحيح في مستعرض ويب ، لذلك لا توجد مشكلة كما هي. منذ عدد الأحرف الناتج يزيد وأنه من الصعب قراءة عند النظر في HTML أثناء التطوير، يمكن أن يكون الإخراج باللغة اليابانية كما هو في الطريقة التالية.

منع طباعة اللغة اليابانية بمراجع واقعية (راجع الأحرف الرقمية)

للبدء.cs فقط إضافة التعليمات البرمجية إلى الملف كما يلي:

// 追加
using Microsoft.Extensions.WebEncoders;
using System.Text.Encodings.Web;
using System.Text.Unicode;

// 省略

public class Startup
{
  // 省略

  // このメソッドはランタイムによって呼び出されます。 このメソッドを使用して、コンテナーにサービスを追加します。
  public void ConfigureServices(IServiceCollection services)
  {
    // 省略

    // 全ての文字をが実態参照で出力されないようにする
    // 全てではなく特定の範囲のみをエンコードさせたくない場合は UnicodeRanges.All のプロパティを個別に設定します。
    services.Configure<WebEncoderOptions>(options =>
    {
      options.TextEncoderSettings = new TextEncoderSettings(UnicodeRanges.All);

      // 個別に設定する場合 (例)
      //options.TextEncoderSettings = new TextEncoderSettings(UnicodeRanges.Hiragana, UnicodeRanges.Katakana);
    });
  }

  // 省略
}

Startup.ConfigureServices في services.Configure<WebEncoderOptions> الأسلوب، استدعاء الأسلوب، options.TextEncoderSettings تعيين TextEncoderSettings مثيل إلى .

إذا قمت بتعيين UnicodeRanges.All الوسيطة، فلن يتم تحويل كافة الأحرف إلى مراجع في العالم الحقيقي وسيتم إخراجها كما هي.

إذا قمت بتحديد نطاقات فردية لا UnicodeRanges.All تريد تحويلها، فسوف تحدد قيمة واحدة أو أكثر من القيم الأخرى. ومع ذلك، في الأساس، إلا إذا كان لديك UnicodeRanges.All سبب محدد، قد تحتاج إلى تحديد .

إذا كنت فعلا تشغيله وتأكيده، يمكنك أن ترى أن اليابانية هو الإخراج مباشرة دون الإشارة إلى الوضع الفعلي.