Share via


IdnMapping.UseStd3AsciiRules Propiedad

Definición

Obtiene o establece un valor que indica si se utilizan convenciones de nomenclatura relajada o no estándar en las operaciones realizadas por miembros del objeto IdnMapping actual.

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

Valor de propiedad

Es true si se usan convenciones de nomenclatura estándar en las operaciones; de lo contrario, es false.

Ejemplos

En el ejemplo siguiente se generan direcciones URL que contienen caracteres en el intervalo ASCII de U+0000 a U+007F y se pasan al GetAscii(String) método de dos IdnMapping objetos. Un objeto tiene su UseStd3AsciiRules propiedad establecida trueen y el otro objeto lo tiene establecido en false. La salida muestra los caracteres que no son válidos cuando la UseStd3AsciiRules propiedad es true pero válida cuando es false.

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

Comentarios

Los nombres de dominio que siguen las reglas de nomenclatura estándar constan de un subconjunto específico de caracteres en el intervalo de caracteres US-ASCII. Los caracteres son las letras A a Z, los dígitos del 0 al 9, el carácter de guion (-) (U+002D) y el carácter del punto (.). El caso de los caracteres no es significativo. Las convenciones de nomenclatura relajadas permiten el uso de una gama más amplia de caracteres ASCII, incluido el carácter de espacio (U+0020), el carácter de signo de exclamación (U+0021) y el carácter de barra inferior (U+005F). Si UseStd3AsciiRules es true, solo pueden aparecer caracteres estándar en una etiqueta devuelta por el GetAscii método .

De forma predeterminada, el valor de la UseStd3AsciiRules propiedad es falsey se permite un subconjunto expandido de caracteres ASCII en una etiqueta.

Nota

La IdnMapping clase prohíbe el uso de los caracteres no reproducibles U+0000 a U+001F y U+007F en etiquetas de nombre de dominio independientemente del valor de la UseStd3AsciiRules propiedad. Esta prohibición reduce el riesgo de ataques de seguridad, como la suplantación de nombre.

Se aplica a