IdnMapping.UseStd3AsciiRules Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define um valor que indica se convenções de nomenclatura padrão ou amenas são usadas em operações realizadas por membros do objeto IdnMapping atual.
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 da propriedade
true
se as convenções de nomenclatura padrão forem usadas em operações; caso contrário, false
.
Exemplos
O exemplo a seguir gera URLs que contêm caracteres no intervalo ASCII de U+0000 a U+007F e os passa para o GetAscii(String) método de dois IdnMapping objetos. Um objeto tem sua UseStd3AsciiRules propriedade definida como true
e o outro objeto o define como false
. A saída exibe os caracteres inválidos quando a UseStd3AsciiRules propriedade é true
válida quando é 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
Comentários
Os nomes de domínio que seguem as regras de nomenclatura padrão consistem em um subconjunto específico de caracteres no intervalo de caracteres US-ASCII. Os caracteres são as letras A a Z, os dígitos de 0 a 9, o caractere hífen (-) (U+002D) e o caractere de ponto (.). O caso dos caracteres não é significativo. Convenções de nomenclatura descontraídas permitem o uso de uma gama mais ampla de caracteres ASCII, incluindo o caractere de espaço (U+0020), o caractere de ponto de exclamação (U+0021) e o caractere da barra inferior (U+005F). Se UseStd3AsciiRules for true
, somente caracteres padrão poderão aparecer em um rótulo retornado pelo GetAscii método .
Por padrão, o valor da UseStd3AsciiRules propriedade é false
e um subconjunto expandido de caracteres ASCII é permitido em um rótulo.
Observação
A IdnMapping classe proíbe o uso dos caracteres não reproduzíveis U+0000 a U+001F e U+007F em rótulos de nome de domínio, independentemente da configuração da UseStd3AsciiRules propriedade. Essa proibição reduz o risco de ataques de segurança, como falsificação de nomes.