Предотвратяване на изхода от японски като HTML от действителната препратка към условието (вж. цифровите знаци)

Дата на създаване на страница :

Околната среда

Визуално студио
  • Изглед от 10 до 2008
ASP.NET ядро
  • 3.1 (Страницата на Бръснача, MVC)

Японски динамично подредени в програмата е изход като препратка към действителната ситуация.

Index.cshtmlНека покажем тези, които са влезли японски директно в и тези, които извеждат японски с ViewData както следва.

<!-- 省略 -->

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

От страна на програмата задайте японски viewData.

.cs

// 省略

public class IndexModel : PageModel
{
  // 省略

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

У домаКонтролер .cs (за MVC)

// 省略

public class HomeController : Controller
{
  // 省略

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

Когато изпълнявам грешки, и двете се показват на японски правилно.

Ако обаче погледнете източника на страницата в уеб браузър, можете да видите, че японски изход в ViewData е продукция с препратка в реалния свят (виж цифровите знаци).

Препратка към реалния свят (вж. цифровите знаци) е буквено-цифров алтернативен знак, използван, когато искате да представяте Знаците в Unicode в среда, която може да обработва само букви и цифри или да показва само определени езици. Например буквата "а" е "&#x3042;" в действителната ситуация препратка (вж. #x3042 знаци). ще се показва като .

Типичен уеб браузър кодира и показва знаци правилно, дори ако html съдържа препратки от реалния свят. Потребителите често не знаят за действителната ситуация препратки.

По принцип, тя се показва правилно в уеб браузър, така че няма проблем, тъй като е. Тъй като броят на знаците се увеличава и е трудно да се чете, когато се гледа HTML по време на разработка, той може да бъде изход на японски, тъй като е по следния начин.

Предотвратяване на отпечатването на японски с референции в реалния свят (вж. цифровите знаци)

За да започнете.cs просто добавете кода към файла, както следва:

// 追加
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 В services.Configure<WebEncoderOptions> метода, обадете се на метода, options.TextEncoderSettings Задайте TextEncoderSettings екземпляр на .

Ако зададете UnicodeRanges.All аргумента, всички знаци няма да бъдат конвертирани в референции в реалния свят и ще бъдат изходни, както е.

Ако зададете отделни диапазони, които не искате UnicodeRanges.All да конвертирате, ще укажете една или повече други стойности. Въпреки това, по принцип, освен ако нямате конкретна UnicodeRanges.All причина, може да поискате да посочите .

Ако всъщност го стартирате и да го потвърдите, можете да видите, че японски е изход директно, без да се позовава на действителната ситуация.