Tránh sử dụng tiếng Nhật được xuất dưới dạng HTML làm tài liệu tham khảo thực tế (tham chiếu ký tự số)

Ngày tạo trang :

môi trường

Visual Studio
  • Visual Studio 2019
ASP.NET Core
  • 3.1 (Trang Razor, MVC)

Tiếng Nhật được sắp xếp động trong chương trình làm đầu ra tham chiếu thực tế

Hiển thị Index.cshtml nội dung nhập tiếng Nhật trực tiếp vào và đầu ra tiếng Nhật bằng đầu ra ViewData, như được hiển thị bên dưới.

<!-- 省略 -->

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

Ở phía chương trình, hãy đặt ViewData thành tiếng Nhật.

Index.cshtml .cs (đối với trang Razor)

// 省略

public class IndexModel : PageModel
{
  // 省略

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

HomeController .cs (đối với MVC)

// 省略

public class HomeController : Controller
{
  // 省略

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

Khi tôi chạy gỡ lỗi, cả hai đều hiển thị tiếng Nhật một cách chính xác.

Tuy nhiên, khi bạn xem nguồn cấp dữ liệu trang trong trình duyệt web, bạn sẽ thấy rằng đầu ra ViewData bằng tiếng Nhật thực tế (xem ký tự số).

Tham chiếu thực tế (tham chiếu ký tự số) là một ký tự thay thế chữ và số được sử dụng để đại diện cho các ký tự Unicode trong một môi trường chỉ có thể xử lý chữ và số hoặc chỉ hiển thị một ngôn ngữ cụ thể. Ví dụ: trong tham chiếu trạng thái thực tế (xem ký tự số) "a" một #x3042&". Hiển thị dưới dạng .

Một trình duyệt web điển hình mã hóa và hiển thị các ký tự một cách chính xác, ngay cả khi HTML chứa tài liệu tham khảo thực tế. Người dùng thường không nhận thức được tài liệu tham khảo thực

Về cơ bản, nó được hiển thị chính xác trong trình duyệt web, vì vậy không có vấn đề gì, Số ký tự đầu ra tăng lên và khó đọc khi xem HTML tại thời điểm phát triển, vì vậy bạn có thể xuất bằng tiếng Nhật bằng cách:

Ngăn đầu ra tiếng Nhật là tài liệu tham khảo thực tế (xem ký tự số)

Chỉ cần .cs mã cho tệp Startup như sau:

// 追加
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 Gọi services.Configure<WebEncoderOptions> phương thức trong phương thức, rồi bấm options.TextEncoderSettings TextEncoderSettings Phiên bản được thiết lập.

Khi bạn UnicodeRanges.All thiết lập vào một tham số, tất cả các ký tự được xuất ra như là, không phải là một tài liệu tham khảo thực tế.

Nếu bạn muốn chỉ định một phạm vi không chuyển đổi một UnicodeRanges.All cách riêng biệt, chỉ định một hoặc nhiều giá trị không. Tuy nhiên, về cơ bản, bạn có thể chỉ định UnicodeRanges.All trừ khi có một lý do đặc biệt.

Khi thực sự chạy và xác nhận, bạn sẽ thấy đầu ra trực tiếp bằng tiếng Nhật thay vì tham chiếu thực tế.