Preprečevanje japonskega izhoda kot HTML dejanskega sklica na pogoj (glejte številčne znake)

Datum ustvarjanja strani :

Okolje

Vizualni studio
  • Vizualni studio 2019
ASP.NET Core
  • 3.1 (Stran z britvicami, MVC)

Japonsko dinamično razporejanje v programu je izhod kot sklic na dejansko stanje.

Prikažimo tiste, ki so vnesli japonščino neposredno v in tiste, ki izstopajo japonščino z Index.cshtml uporabo ViewData, kot sledi.

<!-- 省略 -->

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

Na strani programa nastavite japonščino na ViewData.

Index.cshtml.cs (za strani z britvicami)

// 省略

public class IndexModel : PageModel
{
  // 省略

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

DomovKontrolerji .cs (za MVC)

// 省略

public class HomeController : Controller
{
  // 省略

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

Ko zaženem odpravljanje napak, sta oba pravilno prikazana v japonščini.

Če pa pogledate vir strani v spletnem brskalniku, lahko vidite, da je japonski izhod v viewData izhod s sklicem v realnem svetu (glejte številčne znake).

Sklic v realnem svetu (glej numerične znake) je alfanumerični alternativni znak, ki se uporablja, ko želite predstavljati Unicode znake v okolju, ki lahko obdela samo alfanumerične znake ali prikaže le določene jezike. Črka "a" je na primer »&#x3042;« v dejanski referenci stanja (glejte #x3042 znakov). bo prikazana kot .

Tipični spletni brskalnik kodi in pravilno prikaže znake, tudi če html vsebuje sklice v realnem svetu. Uporabniki se pogosto ne zavedajo dejanskih sklicev na stanje.

V bistvu se pravilno prikaže v spletnem brskalniku, tako da ni težav, kot je. Ker število znakov izhod poveča in je težko brati, ko gleda HTML med razvojem, je lahko izhod v japonščini, kot je na naslednji način.

Preprečite tiskanje japonščine s sklici v realnem svetu (glejte številčne znake)

Če želite začeti.cs datoteki dodajte kodo na naslednji način:

// 追加
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 Pri services.Configure<WebEncoderOptions> metodi pokličite metodo, Nastavite options.TextEncoderSettings TextEncoderSettings primerek za .

Če nastavite argument, vsi znaki ne bodo pretvorjeni v sklicevanja v realnem svetu in bodo izhodni, kot UnicodeRanges.All je.

Če določite posamezne obsege, ki jih ne želite pretvoriti, boste določili eno ali več UnicodeRanges.All drugih vrednosti. Vendar pa, v bistvu, razen če imate poseben razlog, boste morda UnicodeRanges.All želeli določiti .

Če ga dejansko zaženete in potrdite, lahko vidite, da je japonščina izhod neposredno brez sklicevanje na dejansko stanje.