Impedisci l'output giapponese come HTML dal riferimento effettivo alle condizioni (vedere caratteri numerici)

Data di creazione della pagina :

ambiente

Visual Studio
  • Visual Studio 2019
ASP.NET Nucleo
  • 3.1 (pagina Razor, MVC)

Il giapponese disposto dinamicamente nel programma viene prodotto come riferimento alla situazione reale.

Index.cshtmlVengono visualizzati quelli immessi direttamente in giapponese e quelli che esentrano in giapponese utilizzando ViewData come segue.

<!-- 省略 -->

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

Sul lato del programma, impostare il giapponese su ViewData.

Index.cshtml.cs (per le pagine Razor)

// 省略

public class IndexModel : PageModel
{
  // 省略

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

HomeController .cs (per MVC)

// 省略

public class HomeController : Controller
{
  // 省略

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

Quando si esegue il debug, entrambi vengono visualizzati correttamente in giapponese.

Tuttavia, se si esamina l'origine della pagina in un browser Web, è possibile vedere che l'output giapponese in ViewData viene prodotto con un riferimento reale (vedere caratteri numerici).

Un riferimento reale (vedere caratteri numerici) è un carattere alternativo alfanumerico utilizzato quando si desidera rappresentare caratteri Unicode in un ambiente in grado di elaborare solo caratteri alfanumerici o visualizzare solo determinati linguaggi. Ad esempio, la lettera "a" è "&#x3042;" nel riferimento alla situazione effettiva (vedere #x3042 caratteri). verrà visualizzato come .

Un tipico browser Web codifica e visualizza correttamente i caratteri anche se html contiene riferimenti reali. Gli utenti spesso non sono a conoscenza dei riferimenti alla situazione reale.

Fondamentalmente, viene visualizzato correttamente in un browser Web, quindi non ci sono problemi così com'è. Poiché il numero di caratteri di output aumenta ed è difficile da leggere quando si guarda l'HTML durante lo sviluppo, può essere prodotto in giapponese così com'è nel modo seguente.

Impedisci la stampa del giapponese con riferimenti reali (vedi caratteri numerici)

Per iniziare.cs basta aggiungere il codice al file come segue:

// 追加
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 Nel metodo services.Configure<WebEncoderOptions> chiamare il metodo , options.TextEncoderSettings Impostare TextEncoderSettings un'istanza di su .

Se si imposta UnicodeRanges.All l'argomento, tutti i caratteri non verranno convertiti in riferimenti reali e verranno esati così com'è.

Se si specificano singoli intervalli che non si desidera UnicodeRanges.All convertire, si specificano uno o più altri valori. Tuttavia, fondamentalmente, a meno che non si UnicodeRanges.All abbia un motivo specifico, è possibile specificare .

Se lo esegui effettivamente e lo confermi, puoi vedere che il giapponese viene prodotto direttamente senza fare riferimento alla situazione reale.