מניעת פלט ביפנית כ- 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 של HomeController (עבור MVC)

// 省略

public class HomeController : Controller
{
  // 省略

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

בעת הפעלת איתור באגים, שניהם מוצגים ביפנית כראוי.

עם זאת, אם אתה מסתכל על מקור הדף בדפדפן אינטרנט, באפשרותך לראות שהפלט היפני ב- ViewData הוא פלט עם הפניה מהעולם האמיתי (ראה תווים מספריים).

הפניה מהעולם האמיתי (ראו תווים מספריים) היא תו חלופי אלפאנומרי המשמש כאשר ברצונך לייצג תווי Unicode בסביבה שיכולה לעבד תווים אלפאנומריים בלבד או להציג שפות מסוימות בלבד. לדוגמה, האות "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 סיבה ספציפית, ייתכן שתרצה לציין .

אם אתה באמת להפעיל אותו ולאשר את זה, אתה יכול לראות כי יפנית היא פלט ישירות מבלי להתייחס למצב בפועל.