Impedeix que la sortida japonesa com a HTML sigui referència de condició real (veure caràcters numèrics)

Data de creació de la pàgina :

Medi ambient

Estudi Visual
  • Estudi Visual 2019
Nucli ASP.NET
  • 3.1 (Pàgina de la navalla, MVC)

El japonès organitzat dinàmicament en el programa és una referència a la situació real.

Index.cshtmlMostrem els que han introduït japonès directament i els que surten japonesos usant ViewData de la següent manera.

<!-- 省略 -->

<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>

Al costat del programa, establiu Japonès a ViewData.

Index.cshtml.cs (per a pàgines d'navalla)

// 省略

public class IndexModel : PageModel
{
  // 省略

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

IniciController .cs (per a MVC)

// 省略

public class HomeController : Controller
{
  // 省略

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

Quan executo la depuració, ambdues es mostren correctament en japonès.

No obstant això, si observeu l'origen de la pàgina en un navegador web, podeu veure que la sortida japonesa a ViewData és una sortida amb una referència del món real (vegeu caràcters numèrics).

Una referència del món real (veure caràcters numèrics) és un caràcter alternatiu alfanumèric que s'utilitza quan es vol representar caràcters Unicode en un entorn que només pot processar caràcters alfanumèrics o mostrar només certs idiomes. Per exemple, la lletra "a" és "&#x3042;" a la referència de situació real (vegeu #x3042 caràcters). es visualitzarà com a .

Un navegador web típic codifica i mostra els caràcters correctament encara que html contingui referències del món real. Els usuaris sovint desconeixen les referències reals de la situació.

Bàsicament, es mostra correctament en un navegador web, de manera que no hi ha cap problema tal com és. Atès que el nombre de caràcters de sortida augmenta i és difícil de llegir quan es mira HTML durant el desenvolupament, es pot generar en japonès tal com és de la següent manera.

Impedir que el japonès s'imprimeixi amb referències del món real (veure caràcters numèrics)

Per començar.cs només heu d'afegir el codi al fitxer de la manera següent:

// 追加
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 En el services.Configure<WebEncoderOptions> mètode, truqueu al mètode, options.TextEncoderSettings Definiu TextEncoderSettings una instància de a .

Si definiu UnicodeRanges.All l'argument, tots els caràcters no es convertiran en referències del món real i es generaran tal com és.

Si especifiqueu intervals individuals que no voleu UnicodeRanges.All convertir, especificareu un o més valors. Tanmateix, bàsicament, a menys que tingueu una UnicodeRanges.All raó específica, potser voldreu especificar .

Si realment l'executeu i el confirmeu, podeu veure que el japonès surt directament sense referir-se a la situació real.