Предотвращение японского выхода в качестве 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 (для страниц Razor)

// 省略

public class IndexModel : PageModel
{
  // 省略

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

HomeController .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 нет конкретной причины, вы можете указать .

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