Neleisti japonų išvestis kaip HTML iš faktinės sąlygos nuorodos (žr. skaitinius simbolius)

Puslapio sukūrimo data :

Aplinkos

Vizualinė studija
  • Vizualinė studija 2019
ASP.NET branduolys
  • 3.1 (Skustuvo puslapis, MVC)

Japonų dinamiškai išdėstyti programoje yra išvestis kaip nuoroda į faktinę situaciją.

Index.cshtmlParodykime tuos, kurie tiesiogiai įvedė japonų kalbą, ir tuos, kurie išveda japonų kalbą naudodami "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>

Programos šone nustatykite japonų kalbą ViewData.

Index.cshtml.cs (skustuvo puslapiams)

// 省略

public class IndexModel : PageModel
{
  // 省略

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

HomeController .cs (MVC)

// 省略

public class HomeController : Controller
{
  // 省略

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

Kai paleidu derinimą, abu rodomi japonų kalba teisingai.

Tačiau, jei pažvelgsite į puslapio šaltinį žiniatinklio naršyklėje, pamatysite, kad japonų išvestis ViewData yra išvestis su realaus pasaulio nuoroda (žr. skaitinius simbolius).

Realaus pasaulio nuoroda (žr. skaitinius simbolius) yra raidinis-skaitinis alternatyvus simbolis, naudojamas, kai norite atvaizduoti Unicode simbolius aplinkoje, kuri gali apdoroti tik raidinius ir skaitinius simbolius arba rodyti tik tam tikras kalbas. Pavyzdžiui, raidė "a" yra "&#x3042;" faktinėje situacijos nuorodoje (žr. #x3042 simbolių). jis bus rodomas kaip .

Įprasta žiniatinklio naršyklė teisingai koduoja ir rodo simbolius, net jei html yra realaus pasaulio nuorodų. Vartotojai dažnai nežino apie faktines padėties nuorodas.

Iš esmės jis rodomas teisingai žiniatinklio naršyklėje, todėl nėra jokių problemų. Kadangi simbolių skaičius padidėja ir sunku skaityti, kai žiūri į HTML kūrimo metu, jis gali būti išvestis japonų kalba, nes ji yra tokiu būdu.

Neleisti japonų kalbai spausdinti su realaus pasaulio nuorodomis (žr. skaitinius simbolius)

Norėdami pradėti.cs tiesiog pridėkite kodą prie failo taip:

// 追加
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>Metode iškvieskite metodą, options.TextEncoderSettingsNustatykite TextEncoderSettings egzempliorių į .

Jei nustatysite UnicodeRanges.All argumentą, visi simboliai nebus konvertuoti į realaus pasaulio nuorodas ir bus išvesties, kaip yra.

Jei nurodysite atskirus diapazonus, kurių nenorite UnicodeRanges.All konvertuoti, nurodysite vieną ar daugiau kitų reikšmių. Tačiau iš esmės, jei neturite konkrečios UnicodeRanges.All priežasties, galbūt norėsite nurodyti .

Jei iš tikrųjų jį paleisti ir patvirtinti, galite pamatyti, kad japonų yra produkcija tiesiogiai, nenurodant faktinės situacijos.