IdnMapping.UseStd3AsciiRules Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví hodnotu, která označuje, zda standardní nebo uvolněné zásady vytváření názvů jsou použity v operacích prováděných členy aktuálního IdnMapping objektu.
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
Hodnota vlastnosti
true
pokud se v operacích používají standardní zásady vytváření názvů; v opačném případě . false
Příklady
Následující příklad vygeneruje adresy URL, které obsahují znaky v rozsahu ASCII od U+0000 do U+007F, a předá je GetAscii(String) metodě dvou IdnMapping objektů. Jeden objekt má vlastnost UseStd3AsciiRules nastavenou na true
a druhý objekt na false
. Ve výstupu se zobrazí znaky, které jsou neplatné, UseStd3AsciiRules pokud je true
vlastnost, ale je platná, pokud je 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
Poznámky
Názvy domén, které se řídí standardními pravidly pojmenování, se skládají z určité podmnožiny znaků v rozsahu znaků US-ASCII. Znaky jsou písmena A až Z, číslice 0 až 9, znak spojovníku (-) (U+002D) a tečka (.). Velikost písmen není důležitá. Uvolněné zásady vytváření názvů umožňují použití širšího rozsahu znaků ASCII, včetně znaku mezery (U+0020), vykřičníku (U+0021) a znaku dolního pruhu (U+005F). Pokud UseStd3AsciiRules je true
, můžou se v popisku vráceném metodou GetAscii zobrazit pouze standardní znaky.
Ve výchozím nastavení je false
hodnota UseStd3AsciiRules vlastnosti a v popisku je povolená rozšířená podmnožina znaků ASCII.
Poznámka
Třída IdnMapping zakazuje použití nedisponovatelných znaků U+0000 až U+001F a U+007F v popiscích názvů domén bez ohledu na nastavení UseStd3AsciiRules vlastnosti. Tento zákaz snižuje riziko útoků na zabezpečení, jako je falšování názvu.