Zabránenie japonskému výstupu vo formáte HTML v odkaze na skutočnú podmienku (pozri číselné znaky)

Dátum vytvorenia strany :

Životné prostredie

Vizuálne štúdio
  • Visual Studio 2019
ASP.NET jadro
  • 3.1 (Britva strana, MVC)

Japončina dynamicky usporiadané v programe je výstup ako odkaz na skutočnú situáciu.

Index.cshtmlZobrazme tie, ktoré zadali japončinu priamo do a tie, ktoré výstup japončiny pomocou ViewData takto.

<!-- 省略 -->

<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 strane programu nastavte japončinu na ViewData.

Index.cshtml.cs (pre strany Britvy)

// 省略

public class IndexModel : PageModel
{
  // 省略

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

HomeController .cs (pre MVC)

// 省略

public class HomeController : Controller
{
  // 省略

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

Po spustení ladenia, obe sú zobrazené v japončine správne.

Avšak, ak sa pozriete na zdroj stránky vo webovom prehľadávači, môžete vidieť, že japonský výstup v ViewData je výstup s odkazom reálneho sveta (pozri číselné znaky).

Odkaz v reálnom svete (pozri číselné znaky) je alfanumerický alternatívny znak, ktorý sa používa, ak chcete reprezentovať znaky Unicode v prostredí, ktoré dokáže spracovať iba alfanumerické znaky alebo zobraziť iba určité jazyky. Napríklad písmeno "a" je "&#x3042;" v odkaze na skutočnú situáciu (pozri #x3042 znakov). zobrazí sa ako .

Typický webový prehľadávač kóduje a zobrazuje znaky správne, aj keď html obsahuje odkazy v reálnom svete. Používatelia často nevedia o skutočnej situácii odkazy.

V podstate sa zobrazuje správne vo webovom prehľadávači, takže nie je žiadny problém, ako to je. Vzhľadom k tomu, počet znakov výstup zvyšuje a je ťažké čítať pri pohľade na HTML počas vývoja, to môže byť výstup v japončine, ako je to nasledujúcim spôsobom.

Zabránenie tlači japončiny s odkazmi na reálny svet (pozri číselné znaky)

Ak chcete .cs stačí pridať kód do súboru takto:

// 追加
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 V services.Configure<WebEncoderOptions> metóde zavolajte metódu, options.TextEncoderSettings Nastavte TextEncoderSettings inštanciu na .

Ak nastavíte UnicodeRanges.All argument, všetky znaky sa neskonvertujú na odkazy v reálnom svete a budú výstupné tak, ako sú.

Ak zadáte jednotlivé rozsahy, ktoré nechcete UnicodeRanges.All konvertovať, určíte jednu alebo viac ďalších hodnôt. Ak však nemáte konkrétny UnicodeRanges.All dôvod, možno budete chcieť zadať .

Ak ho skutočne spustíte a potvrdíte, môžete vidieť, že japončina je výstup priamo bez odkazu na skutočnú situáciu.