Zapobieganie japońskiemu wyjściu jako HTML z rzeczywistego odwołania do warunku (patrz znaki liczbowe)
Środowiska
- Visual Studio
-
- Visual Studio 2019
- Rdzeń ASP.NET
-
- 3.1 (strona razor, MVC)
Japoński dynamicznie rozmieszczone w programie jest dane wyjściowe jako odniesienie do rzeczywistej sytuacji.
Index.cshtml
Wyświetlmy te, które wprowadziły japoński bezpośrednio do i te, które wyprowadzają japoński przy użyciu ViewData w następujący sposób.
<!-- 省略 -->
<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>
Po stronie programu ustaw japoński viewdata.
Index.cshtml.cs (dla stron Razor)
// 省略
public class IndexModel : PageModel
{
// 省略
public void OnGet()
{
ViewData["Message"] = "ViewData から日本語を表示させます。";
}
}
HomeController .cs (dla MVC)
// 省略
public class HomeController : Controller
{
// 省略
public IActionResult Index()
{
ViewData["Message"] = "ViewData から日本語を表示させます。";
}
}
Po uruchomieniu debugowania oba są wyświetlane poprawnie w języku japońskim.
Jeśli jednak spojrzysz na źródło strony w przeglądarce sieci Web, zobaczysz, że dane wyjściowe języka Japoński w viewdata są wyprowadzane z odniesieniem do rzeczywistych (patrz znaki liczbowe).
Odniesienie do rzeczywistości (patrz znaki liczbowe) jest alfanumerycznym alternatywnym znakiem używanym, gdy chcesz reprezentować znaki Unicode w środowisku, które może przetwarzać tylko znaki alfanumeryczne lub wyświetlać tylko niektóre języki. Na przykład litera "a" to "あ" w rzeczywistym odwołaniu do sytuacji (patrz #x3042 znaków). zostanie wyświetlony jako .
Typowa przeglądarka sieci Web poprawnie koduje i wyświetla znaki, nawet jeśli html zawiera rzeczywiste odniesienia. Użytkownicy często nie są świadomi rzeczywistych odwołań do sytuacji.
Zasadniczo jest wyświetlany poprawnie w przeglądarce internetowej, więc nie ma problemu, jak to jest. Ponieważ liczba znaków wyjściowych wzrasta i trudno jest odczytać, patrząc na HTML podczas rozwoju, może być dane wyjściowe w języku japońskim, jak to jest w następujący sposób.
Zapobieganie drukowaniu języka japońskiego z rzeczywistymi odniesieniami (patrz znaki liczbowe)
Aby rozpocząć.cs wystarczy dodać kod do pliku w następujący sposób:
// 追加
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
W services.Configure<WebEncoderOptions>
metodzie, wywołać metodę,
options.TextEncoderSettings
Ustaw TextEncoderSettings
wystąpienie na .
Jeśli ustawisz UnicodeRanges.All
argument, wszystkie znaki nie zostaną przekonwertowane na odniesienia w świecie rzeczywistym i będą wyprowadzane w stanie, w jakim jest.
Jeśli określisz poszczególne zakresy, których nie chcesz UnicodeRanges.All
konwertować, określisz jedną lub więcej innych wartości.
Jednak zasadniczo, chyba że masz konkretny UnicodeRanges.All
powód, możesz określić .
Jeśli rzeczywiście uruchomić go i potwierdzić, widać, że japoński jest dane wyjściowe bezpośrednio bez odwoływania się do rzeczywistej sytuacji.