Japāņu valodas izvades kā HTML novēršana no faktiskā stāvokļa atsauces (sk. ciparu rakstzīmes)

Lapas izveides datums :

Vides

Vizuālā studija
  • Visual Studio 2019
ASP.NET kodols
  • 3.1 (Skuvekļa lapa, MVC)

Japāņu dinamiski sakārtots programmā ir izvade kā atsauce uz faktisko situāciju.

Index.cshtmlParādiet tos, kas tieši ievadījuši japāņu valodu, un tos, kas izvada japāņu valodu, izmantojot ViewData šādi.

<!-- 省略 -->

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

Programmas pusē iestatiet japāņu valodu uz ViewData.

Index.cshtml.cs (skuvekļa lapām)

// 省略

public class IndexModel : PageModel
{
  // 省略

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

HomeController .cs (MVC)

// 省略

public class HomeController : Controller
{
  // 省略

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

Palaižot atkļūdošanu, abas tiek pareizi parādītas japāņu valodā.

Tomēr, ja skatāties uz lapas avotu tīmekļa pārlūkprogrammā, var redzēt, ka japāņu valodas izvade ViewData tiek izvadīta ar reālu atsauci (skatiet ciparu rakstzīmes).

Reālās pasaules atsauce (sk. ciparu rakstzīmes) ir burtciparu alternatīvā rakstzīme, ko izmanto, ja unikoda rakstzīmes vēlaties attēlot vidē, kurā var apstrādāt tikai burtciparu rakstzīmes vai parādīt tikai noteiktas valodas. Piemēram, faktiskās situācijas atsaucē burts "a" ir "#x3042;" (sk. #x3042 rakstzīmes). tas tiks parādīts kā .

Tipiska Web pārlūkprogramma pareizi kodē un parāda rakstzīmes pat tad, ja html satur reālas atsauces. Lietotāji bieži vien nezina par faktiskajām situācijas atsaucēm.

Būtībā tas tiek pareizi parādīts tīmekļa pārlūkprogrammā, tāpēc nav problēmu, kā tas ir. Tā kā rakstzīmju izvades skaits palielinās un izstrādes laikā ir grūti lasīt HTML, to var izvadīt japāņu valodā, jo tas ir šādā veidā.

Japāņu valodas drukāšanas novēršana, izmantojot atsauces reālajā pasaulē (sk. ciparu rakstzīmes)

Lai .cs vienkārši pievienojiet kodu failam šādi:

// 追加
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 Metodē services.Configure<WebEncoderOptions> izsauciet metodi, options.TextEncoderSettings Iestatiet TextEncoderSettings gadījumu uz .

Iestatot UnicodeRanges.All argumentu, visas rakstzīmes netiks konvertētas par reālām atsaucēm un tiks izvadītas tādas, kādas tās ir.

Ja norādāt atsevišķus diapazonus, kurus UnicodeRanges.All nevēlaties konvertēt, tiks norādīta viena vai vairākas citas vērtības. Tomēr būtībā, ja vien jums nav konkrēta UnicodeRanges.All iemesla, iespējams, vēlēsties norādīt .

Ja jūs faktiski palaist to un apstiprināt to, jūs varat redzēt, ka japāņu ir izejas tieši, neatsaucoties uz faktisko situāciju.