Jaapani väljundi HTML-ina takistamine tegeliku tingimuse viitest (vt numbrimärke)

Lehe loomise kuupäev :

Keskkond

Visuaalstuudio
  • Visuaalstuudio 2019
ASP.NET Tuum
  • 3.1 (Raseerija leht, MVC)

Jaapani dünaamiliselt paigutatud programm on väljund viitena tegelikule olukorrale.

Index.cshtmlKuvame need, kes sisestasid jaapani keele otse, ja need, kes väljastavad jaapani keelt ViewData abil järgmiselt.

<!-- 省略 -->

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

Seadke programmi poolel jaapani keele väärtuseks ViewData.

Index.cshtml.cs (Razori lehekülgede puhul)

// 省略

public class IndexModel : PageModel
{
  // 省略

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

HomeController .cs (MVC jaoks)

// 省略

public class HomeController : Controller
{
  // 省略

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

Silumise käivitamisel kuvatakse mõlemad õigesti jaapani keeles.

Kui aga vaatate lehe allikat veebibrauseris, näete, et Jaapani väljund ViewDatas on väljund reaalmaailma viitega (vt numbrimärke).

Reaalmaailma viide (vt numbrimärgid) on tähtnumbriline alternatiivmärk, mida kasutatakse Unicode'i märkide tähistamiseks keskkonnas, mis saab töödelda ainult tähti või märke või kuvada ainult teatud keeli. Näiteks täht "a" on "&#x3042;" tegeliku situatsiooni viites (vt #x3042 märke). see kuvatakse kui .

Tüüpiline veebibrauser kodeerib ja kuvab märke õigesti isegi siis, kui HTML sisaldab reaalmaailma viiteid. Kasutajad ei ole sageli teadlikud tegelikest olukorraviidetest.

Põhimõtteliselt kuvatakse see veebibrauseris õigesti, nii et probleemi pole. Kuna märkide arv suureneb ja HTML-i vaatamisel on arenduse ajal raske lugeda, võib see olla jaapani keeles väljund, kuna see on järgmisel viisil.

Jaapani keele reaalmaailma viidetega printimise takistamine (vt numbrimärke)

Alustamiseks lisage .cs lihtsalt kood faili järgmiselt:

// 追加
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 Meetodis services.Configure<WebEncoderOptions> helistage meetodile, options.TextEncoderSettings Seadke TextEncoderSettings eksemplar väärtusele .

Argumendi UnicodeRanges.All seadmisel ei teisendata kõiki märke reaalmaailma viideteks ja need väljastatakse sellisena, nagu see on.

Kui määrate üksikud vahemikud, mida te ei soovi UnicodeRanges.All teisendada, määrate ühe või mitu muud väärtust. Kuid põhimõtteliselt, kui teil pole konkreetset UnicodeRanges.All põhjust, võiksite määrata .

Kui te seda tegelikult käivitate ja kinnitate, näete, et jaapani keel on väljund otse, viitamata tegelikule olukorrale.