Japán kimenet html-ként való megakadályozása a tényleges állapothivatkozásban (lásd: numerikus karakterek)

Oldal létrehozásának dátuma :

Környezet

Visual Stúdió
  • Visual Studio 2019
ASP.NET mag
  • 3.1 (Borotva oldal, MVC)

Japán dinamikusan elrendezett a programban kimenet, mint egy hivatkozás a tényleges helyzetet.

Index.cshtmlJelenítsünk meg azokat, amelyek közvetlenül a japánba léptek be, és azokat, amelyek a ViewData használatával japánul jelennek meg az alábbiak szerint.

<!-- 省略 -->

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

A programoldalon állítsa a japánt ViewData-nak.

Index.cshtml.cs (Razor oldalakhoz)

// 省略

public class IndexModel : PageModel
{
  // 省略

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

HomeController .cs (MVC-hez)

// 省略

public class HomeController : Controller
{
  // 省略

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

Hibakeresés futtatáskor mindkettő helyesen jelenik meg japánul.

Ha azonban a webböngészőben a lap forrását nézzük, láthatjuk, hogy a ViewData japán kimenete valós hivatkozással történik (lásd a numerikus karaktereket).

A valós hivatkozás (lásd a numerikus karaktereket) egy alfanumerikus alternatív karakter, amelyet akkor használ, ha Unicode karaktereket szeretne megjeleníteni egy olyan környezetben, amely csak alfanumerikus karaktereket képes feldolgozni vagy csak bizonyos nyelveket megjeleníteni. Az "a" betű például "&#x3042;" a tényleges helyzethivatkozásban (lásd #x3042 karaktereket). jelenik meg .

Egy tipikus webböngésző akkor is megfelelően kódolja és jeleníti meg a karaktereket, ha a html valós hivatkozásokat tartalmaz. A felhasználók gyakran nincsenek tisztában a tényleges helyzetre vonatkozó hivatkozásokkal.

Alapvetően helyesen jelenik meg egy webböngészőben, így nincs probléma, ahogy van. Mivel a karakterek száma kimenet növekszik, és nehéz olvasni, ha ránézünk a HTML fejlesztés során, akkor lehet kimenet japánul, mivel ez a következő módon.

Japánok valós hivatkozásokkal való nyomtatásának megakadályozása (lásd a numerikus karaktereket)

A kezdéshez .cs adja hozzá a kódot a fájlhoz az alábbiak szerint:

// 追加
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 A services.Configure<WebEncoderOptions> módszerben hívja meg a módszert, options.TextEncoderSettings Állítsa TextEncoderSettings be a példányt a .

Ha beállította UnicodeRanges.All az argumentumot, az összes karakter nem lesz valós hivatkozásokká konvertálva, és a kimenet a megfelelő lesz.

Ha olyan tartományokat ad meg, amelyek konvertálása UnicodeRanges.All nem történik meg, egy vagy több másik értéket fog megadni. Azonban alapvetően, kivéve, ha van egy adott UnicodeRanges.All oka, érdemes megadni .

Ha valóban futtatja, és erősítse meg, láthatja, hogy a japán kimenet közvetlenül a tényleges helyzetre való hivatkozás nélkül történik.