실제 조건 참조에서 HTML로 일본어 출력 방지(숫자 문자 참조)

페이지 생성 날짜 :

환경

비주얼 스튜디오
  • 비주얼 스튜디오 2019
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로 설정합니다.

Index.cshtml.cs(면도기 페이지의 경우)

// 省略

public class IndexModel : PageModel
{
  // 省略

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

홈 컨트롤러 .cs (MVC용)

// 省略

public class HomeController : Controller
{
  // 省略

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

디버깅을 실행할 때 둘 다 일본어로 올바르게 표시됩니다.

그러나 웹 브라우저에서 페이지의 소스를 보면 ViewData의 일본어 출력이 실제 참조로 출력되는 것을 볼 수 있습니다(숫자 문자 참조).

실제 참조(숫자 문자 참조)는 영숫자 문자만 처리하거나 특정 언어만 표시할 수 있는 환경에서 유니코드 문자를 나타낼 때 사용되는 영숫자 대체 문자입니다. 예를 들어 문자 "a"는 실제 상황 참조에서 "&#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.ConfigureServicesservices.Configure<WebEncoderOptions>메서드에서 메서드를 호출합니다. options.TextEncoderSettings TextEncoderSettings 로 인스턴스를 설정합니다.

인수를 설정하면 UnicodeRanges.All 모든 문자가 실제 참조로 변환되지 않으며 현재와 같이 출력됩니다.

변환하지 않으려는 개별 범위를 UnicodeRanges.All 지정하면 하나 이상의 다른 값을 지정합니다. 그러나 기본적으로 특정 이유가 없는 한 UnicodeRanges.All .를 지정할 수 있습니다.

실제로 실행하고 확인하면 실제 상황을 언급하지 않고 일본어가 직접 출력되는 것을 볼 수 있습니다.