次の方法で共有


IdnMapping.UseStd3AsciiRules プロパティ

定義

標準または非標準の名前付け規則が、現在の 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。 出力には、 プロパティが の場合は無効ですが、 の場合UseStd3AsciiRulesfalsetrue有効な文字が表示されます。

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 を使用することを禁止します。 この禁止により、名前のスプーフィングなどのセキュリティ攻撃のリスクが軽減されます。

適用対象