Заборонити виведення японської мови у форматі HTML за допомогою посилання на фактичну умову (див. цифри)

Дата створення сторінки :

Середовищі

Візуальна студія
  • Visual Studio 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 から日本語を表示させます。";
  }
}

HomeController .cs (для MVC)

// 省略

public class HomeController : Controller
{
  // 省略

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

Під час налагодження обидва відображаються японською мовою правильно.

Однак, якщо подивитися на джерело сторінки у веб-браузері, то можна побачити, що японський вивід в ViewData вивід з реальним посиланням (див. числові символи).

Посилання в реальному світі (див. цифри) — це буквено-цифровий альтернативний символ, який використовується для представлення символів Юнікоду в середовищі, яке може обробляти лише букви та цифри або відображати лише певні мови. Наприклад, літера "a" має значення "&#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 конкретної причини, ви можете вказати .

Якщо ви дійсно запустити його і підтвердити його, ви можете побачити, що японська вивід безпосередньо, не посилаючись на фактичну ситуацію.