Gerçek koşul başvurusundan HTML olarak Japonca çıktıyı engelleme (bkz. sayısal karakterler)

Sayfa oluşturma tarihi :

Ortam

Visual Studio
  • Visual Studio 2019
ASP.NET Çekirdek
  • 3.1 (Razor sayfası, MVC)

Programda dinamik olarak düzenlenmiş Japonca, gerçek duruma bir başvuru olarak çıktıdır.

Index.cshtmlDoğrudan Japonca girenleri ve ViewData kullanarak Japonca çıktı verenleri aşağıdaki gibi görüntüleyelim.

<!-- 省略 -->

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

Program tarafında Japonca'yı ViewData olarak ayarlayın.

Index.cshtml.cs (Razor sayfaları için)

// 省略

public class IndexModel : PageModel
{
  // 省略

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

HomeController .cs (MVC için)

// 省略

public class HomeController : Controller
{
  // 省略

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

Hata ayıklamayı çalıştırdığımda, her ikisi de Japonca'da doğru şekilde görüntüleniyor.

Ancak, bir Web tarayıcısında sayfanın kaynağına bakarsanız, ViewData'daki Japonca çıktının gerçek bir başvuruyla çıktı olduğunu görebilirsiniz (bkz. sayısal karakterler).

Gerçek dünya başvurusu (bkz. sayısal karakterler), yalnızca alfasayısal karakterleri işleyebilen veya yalnızca belirli dilleri görüntüleyebilen bir ortamda Unicode karakterleri temsil etmek istediğinizde kullanılan alfasayısal bir alternatif karakterdir. Örneğin, "a" harfi gerçek durum başvurusunda "&#x3042;" dir (bkz. #x3042 karakterler). olarak görüntülenecektir.

Tipik bir Web tarayıcısı, html gerçek dünya başvuruları içerse bile karakterleri kodlar ve doğru görüntüler. Kullanıcılar genellikle gerçek durum başvurularının farkında değildir.

Temel olarak, bir Web tarayıcısında doğru şekilde görüntülenir, bu nedenle olduğu gibi bir sorun yoktur. Karakter çıktı sayısı arttığından ve geliştirme sırasında HTML'ye bakarken okunması zor olduğundan, aşağıdaki şekilde olduğu gibi Japonca olarak çıktılanabilir.

Japonca'nın gerçek dünya başvurularıyla yazdırılmasını engelleme (bkz. sayısal karakterler)

Başlamak için.cs kodu dosyaya aşağıdaki gibi eklemeniz yeterlidir:

// 追加
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.ConfigureServicesservices.Configure<WebEncoderOptions>Yöntemde, yöntemi çağırın, options.TextEncoderSettingsörneğini olarak TextEncoderSettings ayarlayın.

UnicodeRanges.AllBağımsız değişkeni ayarlarsanız, tüm karakterler gerçek dünya başvurularına dönüştürülmez ve olduğu gibi çıktısı alınacaktır.

Dönüştürmek istemediğiniz tek tek aralıklar UnicodeRanges.All belirtirseniz, bir veya daha fazla başka değer belirtirsiniz. Ancak, temel olarak, belirli bir UnicodeRanges.All nedeniniz yoksa, belirtmek isteyebilirsiniz.

Gerçekten çalıştırır ve onaylarsanız, Japonca'nın gerçek duruma başvurmadan doğrudan çıktı olduğunu görebilirsiniz.