IdnMapping.UseStd3AsciiRules プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
標準または非標準の名前付け規則が、現在の IdnMapping オブジェクトのメンバーによって実行される操作内で使用されるかどうかを示す値を取得または設定します。
public:
property bool UseStd3AsciiRules { bool get(); void set(bool value); };
public bool UseStd3AsciiRules { get; set; }
member this.UseStd3AsciiRules : bool with get, set
Public Property UseStd3AsciiRules As Boolean
プロパティ値
標準の名前付け規則が操作内で使用される場合は true
。それ以外の場合は false
。
例
次の例では、U+0000 から U+007F までの ASCII 範囲の文字を含む URL を生成し、2 つのIdnMappingオブジェクトの メソッドにGetAscii(String)渡します。 1 つのオブジェクトの UseStd3AsciiRules プロパティが に true
設定され、もう 1 つのオブジェクトで に設定されています false
。 出力には、 プロパティが の場合は無効ですが、 の場合UseStd3AsciiRulesfalse
はtrue
有効な文字が表示されます。
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
int nFailed = 0;
IdnMapping idnStd = new IdnMapping();
idnStd.UseStd3AsciiRules = true;
IdnMapping idnRelaxed = new IdnMapping();
idnRelaxed.UseStd3AsciiRules = false; // The default, but make it explicit.
for (int ctr = 0; ctr <= 0x7F; ctr++) {
string name = $"Prose{ctr}ware.com";
bool stdFailed = false;
bool relaxedFailed = false;
string punyCode = "";
try {
punyCode = idnStd.GetAscii(name);
}
catch (ArgumentException) {
stdFailed = true;
}
try {
punyCode = idnRelaxed.GetAscii(name);
}
catch (ArgumentException) {
relaxedFailed = true;
}
if (relaxedFailed != stdFailed) {
Console.Write("U+{0:X4} ", ctr);
nFailed++;
if (nFailed % 5 == 0)
Console.WriteLine();
}
}
}
}
// The example displays the following output:
// U+0020 U+0021 U+0022 U+0023 U+0024
// U+0025 U+0026 U+0027 U+0028 U+0029
// U+002A U+002B U+002C U+002F U+003A
// U+003B U+003C U+003D U+003E U+003F
// U+0040 U+005B U+005C U+005D U+005E
// U+005F U+0060 U+007B U+007C U+007D
// U+007E
Imports System.Globalization
Module Example
Public Sub Main()
Dim nFailed As Integer = 0
Dim idnStd As New IdnMapping()
idnStd.UseStd3AsciiRules = True
Dim idnRelaxed As New IdnMapping
idnRelaxed.UseStd3AsciiRules = False ' The default, but make it explicit.
For ctr As Integer = 0 To &h7F
Dim name As String = "Prose" + ChrW(ctr) + "ware.com"
Dim stdFailed As Boolean = False
Dim relaxedFailed As Boolean = False
Dim punyCode As String
Try
punyCode = idnStd.GetAscii(name)
Catch e As ArgumentException
stdFailed = True
End Try
Try
punyCode = idnRelaxed.GetAscii(name)
Catch e As ArgumentException
relaxedFailed = True
End Try
If relaxedFailed <> stdFailed Then
Console.Write("U+{0:X4} ", ctr)
nFailed += 1
If nFailed Mod 5 = 0 Then Console.WriteLine()
End If
Next
End Sub
End Module
' The example displays the following output:
' U+0020 U+0021 U+0022 U+0023 U+0024
' U+0025 U+0026 U+0027 U+0028 U+0029
' U+002A U+002B U+002C U+002F U+003A
' U+003B U+003C U+003D U+003E U+003F
' U+0040 U+005B U+005C U+005D U+005E
' U+005F U+0060 U+007B U+007C U+007D
' U+007E
注釈
標準の名前付け規則に従うドメイン名は、US-ASCII 文字範囲の特定の文字のサブセットで構成されます。 文字は、文字 A から Z、数字 0 ~ 9、ハイフン (-) 文字 (U+002D)、ピリオド (.) 文字です。 文字の大文字と小文字は区別されません。 緩やかな名前付け規則により、スペース文字 (U+0020)、感嘆符文字 (U+0021)、アンダーバー文字 (U+005F) など、より広範な ASCII 文字を使用できます。 が のtrue
場合UseStd3AsciiRulesは、 メソッドによってGetAscii返されるラベルに標準文字のみを表示できます。
既定では、 プロパティの UseStd3AsciiRules 値は で false
、ASCII 文字の拡張サブセットはラベルで許可されます。
注意
クラスは IdnMapping 、プロパティの設定 UseStd3AsciiRules に関係なく、ドメイン名ラベルで表示できない文字 U+0000 から U+001F、および U+007F を使用することを禁止します。 この禁止により、名前のスプーフィングなどのセキュリティ攻撃のリスクが軽減されます。
適用対象
.NET