IdnMapping.GetAscii Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Encode une chaîne d'étiquettes du nom de domaine qui inclue des caractères Unicode en dehors de la plage de caractères US-ASCII à une chaîne de caractères Unicode accessibles dans la plage de caractères US-ASCII (U+0020 à U+007E). La chaîne est mise en forme selon la norme IDNA.
Surcharges
GetAscii(String) |
Encode une chaîne d'étiquettes de nom de domaine qui se composent de caractères Unicode en une chaîne de caractères Unicode affichables dans la plage de caractères US-ASCII. La chaîne est mise en forme selon la norme IDNA. |
GetAscii(String, Int32) |
Encode une sous-chaîne d'étiquettes du nom de domaine qui inclue des caractères Unicode en dehors de la plage de caractères US-ASCII. La sous-chaîne est convertie en une chaîne de caractères Unicode affichables appartenant à la plage de caractères US-ASCII et est mise en forme selon la norme IDNA. |
GetAscii(String, Int32, Int32) |
Encode le nombre spécifié de caractères dans une sous-chaîne d’étiquettes de noms de domaine qui incluent des caractères Unicode en dehors de la plage de caractères US-ASCII. La sous-chaîne est convertie en une chaîne de caractères Unicode affichables appartenant à la plage de caractères US-ASCII et est mise en forme selon la norme IDNA. |
GetAscii(String)
- Source:
- IdnMapping.cs
- Source:
- IdnMapping.cs
- Source:
- IdnMapping.cs
Encode une chaîne d'étiquettes de nom de domaine qui se composent de caractères Unicode en une chaîne de caractères Unicode affichables dans la plage de caractères US-ASCII. La chaîne est mise en forme selon la norme IDNA.
public:
System::String ^ GetAscii(System::String ^ unicode);
public string GetAscii (string unicode);
member this.GetAscii : string -> string
Public Function GetAscii (unicode As String) As String
Paramètres
- unicode
- String
Chaîne à convertir qui se compose d'une ou de plusieurs étiquettes de nom de domaine délimitées par des séparateurs d'étiquette.
Retours
Équivalent de la chaîne spécifiée par le paramètre unicode
qui se compose de caractères Unicode affichables dans la plage de caractère US-ASCII (U+0020 à U+007E) et mise en forme selon la norme IDNA.
Exceptions
unicode
a la valeur null
.
unicode
est non valide selon les propriétés AllowUnassigned et UseStd3AsciiRules, ainsi que la norme IDNA.
Exemples
L’exemple suivant utilise la GetAscii(String) méthode pour convertir un tableau de noms de domaine internationalisés en Punycode, qui est un équivalent encodé qui se compose de caractères dans la plage de caractères US-ASCII. La GetUnicode(String) méthode convertit ensuite le nom de domaine Punycode en nom de domaine d’origine, mais remplace les séparateurs d’étiquettes d’origine par le séparateur d’étiquette standard.
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
string[] names = { "bücher.com", "мойдомен.рф", "παράδειγμα.δοκιμή",
"mycharity\u3002org",
"prose\u0000ware.com", "proseware..com", "a.org",
"my_company.com" };
IdnMapping idn = new IdnMapping();
foreach (var name in names) {
try {
string punyCode = idn.GetAscii(name);
string name2 = idn.GetUnicode(punyCode);
Console.WriteLine("{0} --> {1} --> {2}", name, punyCode, name2);
Console.WriteLine("Original: {0}", ShowCodePoints(name));
Console.WriteLine("Restored: {0}", ShowCodePoints(name2));
}
catch (ArgumentException) {
Console.WriteLine("{0} is not a valid domain name.", name);
}
Console.WriteLine();
}
}
private static string ShowCodePoints(string str1)
{
string output = "";
foreach (var ch in str1)
output += $"U+{(ushort)ch:X4} ";
return output;
}
}
// The example displays the following output:
// bücher.com --> xn--bcher-kva.com --> bücher.com
// Original: U+0062 U+00FC U+0063 U+0068 U+0065 U+0072 U+002E U+0063 U+006F U+006D
// Restored: U+0062 U+00FC U+0063 U+0068 U+0065 U+0072 U+002E U+0063 U+006F U+006D
//
// мойдомен.рф --> xn--d1acklchcc.xn--p1ai --> мойдомен.рф
// Original: U+043C U+043E U+0439 U+0434 U+043E U+043C U+0435 U+043D U+002E U+0440 U+0444
// Restored: U+043C U+043E U+0439 U+0434 U+043E U+043C U+0435 U+043D U+002E U+0440 U+0444
//
// παράδειγμα.δοκιμή --> xn--hxajbheg2az3al.xn--jxalpdlp --> παράδειγμα.δοκιμή
// Original: U+03C0 U+03B1 U+03C1 U+03AC U+03B4 U+03B5 U+03B9 U+03B3 U+03BC U+03B1 U+002E U+03B4 U+03BF U+03BA U+03B9 U+03BC U+03AE
// Restored: U+03C0 U+03B1 U+03C1 U+03AC U+03B4 U+03B5 U+03B9 U+03B3 U+03BC U+03B1 U+002E U+03B4 U+03BF U+03BA U+03B9 U+03BC U+03AE
//
// mycharity。org --> mycharity.org --> mycharity.org
// Original: U+006D U+0079 U+0063 U+0068 U+0061 U+0072 U+0069 U+0074 U+0079 U+3002 U+006F U+0072 U+0067
// Restored: U+006D U+0079 U+0063 U+0068 U+0061 U+0072 U+0069 U+0074 U+0079 U+002E U+006F U+0072 U+0067
//
// prose ware.com is not a valid domain name.
//
// proseware..com is not a valid domain name.
//
// a.org --> a.org --> a.org
// Original: U+0061 U+002E U+006F U+0072 U+0067
// Restored: U+0061 U+002E U+006F U+0072 U+0067
//
// my_company.com --> my_company.com --> my_company.com
// Original: U+006D U+0079 U+005F U+0063 U+006F U+006D U+0070 U+0061 U+006E U+0079 U+002E U+0063 U+006F U+006D
// Restored: U+006D U+0079 U+005F U+0063 U+006F U+006D U+0070 U+0061 U+006E U+0079 U+002E U+0063 U+006F U+006D
Imports System.Globalization
Module Example
Public Sub Main()
Dim names() As String = { "bücher.com", "мойдомен.рф", "παράδειγμα.δοκιμή",
"mycharity" + ChrW(&h3002) + "org",
"prose" + ChrW(0) + "ware.com", "proseware..com", "a.org",
"my_company.com" }
Dim idn As New IdnMapping()
For Each name In names
Try
Dim punyCode As String = idn.GetAscii(name)
Dim name2 As String = idn.GetUnicode(punyCode)
Console.WriteLine("{0} --> {1} --> {2}", name, punyCode, name2)
Console.WriteLine("Original: {0}", ShowCodePoints(name))
Console.WriteLine("Restored: {0}", ShowCodePoints(name2))
Catch e As ArgumentException
Console.WriteLine("{0} is not a valid domain name.", name)
End Try
Console.WriteLine()
Next
End Sub
Private Function ShowCodePoints(str1 As String) As String
Dim output As String = ""
For Each ch In str1
output += String.Format("U+{0} ", Convert.ToUInt16(ch).ToString("X4"))
Next
Return output
End Function
End Module
' The example displays the following output:
' bücher.com --> xn--bcher-kva.com --> bücher.com
' Original: U+0062 U+00FC U+0063 U+0068 U+0065 U+0072 U+002E U+0063 U+006F U+006D
' Restored: U+0062 U+00FC U+0063 U+0068 U+0065 U+0072 U+002E U+0063 U+006F U+006D
'
' мойдомен.рф --> xn--d1acklchcc.xn--p1ai --> мойдомен.рф
' Original: U+043C U+043E U+0439 U+0434 U+043E U+043C U+0435 U+043D U+002E U+0440 U+0444
' Restored: U+043C U+043E U+0439 U+0434 U+043E U+043C U+0435 U+043D U+002E U+0440 U+0444
'
' παράδειγμα.δοκιμή --> xn--hxajbheg2az3al.xn--jxalpdlp --> παράδειγμα.δοκιμή
' Original: U+03C0 U+03B1 U+03C1 U+03AC U+03B4 U+03B5 U+03B9 U+03B3 U+03BC U+03B1 U+002E U+03B4 U+03BF U+03BA U+03B9 U+03BC U+03AE
' Restored: U+03C0 U+03B1 U+03C1 U+03AC U+03B4 U+03B5 U+03B9 U+03B3 U+03BC U+03B1 U+002E U+03B4 U+03BF U+03BA U+03B9 U+03BC U+03AE
'
' mycharity。org --> mycharity.org --> mycharity.org
' Original: U+006D U+0079 U+0063 U+0068 U+0061 U+0072 U+0069 U+0074 U+0079 U+3002 U+006F U+0072 U+0067
' Restored: U+006D U+0079 U+0063 U+0068 U+0061 U+0072 U+0069 U+0074 U+0079 U+002E U+006F U+0072 U+0067
'
' prose ware.com is not a valid domain name.
'
' proseware..com is not a valid domain name.
'
' a.org --> a.org --> a.org
' Original: U+0061 U+002E U+006F U+0072 U+0067
' Restored: U+0061 U+002E U+006F U+0072 U+0067
'
' my_company.com --> my_company.com --> my_company.com
' Original: U+006D U+0079 U+005F U+0063 U+006F U+006D U+0070 U+0061 U+006E U+0079 U+002E U+0063 U+006F U+006D
' Restored: U+006D U+0079 U+005F U+0063 U+006F U+006D U+0070 U+0061 U+006E U+0079 U+002E U+0063 U+006F U+006D
Remarques
Le unicode
paramètre spécifie une chaîne d’une ou plusieurs étiquettes composées de caractères Unicode valides. Les étiquettes sont séparées par des séparateurs d’étiquettes. Le unicode
paramètre ne peut pas commencer par un séparateur d’étiquettes, mais il peut inclure et éventuellement se terminer par un séparateur. Les séparateurs d’étiquettes sont FULL STOP (period, U+002E), IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E) et HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61). Par exemple, le nom de domaine « www.adatum.com » se compose des étiquettes, « www », « adatum » et « com », séparées par des points.
Une étiquette ne peut contenir aucun des caractères suivants :
Caractères de contrôle Unicode de U+0001 à U+001F et U+007F.
Caractères Unicode non attribués, si la valeur de la AllowUnassigned propriété est
false
.Caractères non standard dans la plage de caractères US-ASCII, tels que les caractères SPACE (U+0020), EXCLAMATION MARK (U+0021) et LOW LINE (U+005F), si la valeur de la UseStd3AsciiRules propriété est
true
.Caractères interdits par une version spécifique de la norme IDNA. Pour plus d’informations sur les caractères interdits, consultez RFC 3454 : Préparation des chaînes internationalisées (« stringprep ») pour IDNA 2003 et RFC 5982 : Points de code Unicode et noms de domaine internationalisés pour les applications pour IDNA 2008.
La GetAscii méthode convertit tous les séparateurs d’étiquettes en FULL STOP (point, U+002E).
Si unicode
ne contient aucun caractère en dehors de la plage de caractères US-ASCII et qu’aucun caractère de la plage de caractères US-ASCII n’est interdit, la méthode retourne unicode
inchangé.
Notes pour les appelants
Dans .NET Framework 4.5, la IdnMapping classe prend en charge différentes versions de la norme IDNA, en fonction du système d’exploitation utilisé :
Lorsqu’il est exécuté sur Windows 8, il prend en charge la version 2008 de la norme IDNA décrite par RFC 5891 : Internationalized Domain Names in Applications (IDNA) : Protocole.
Lorsqu’il est exécuté sur des versions antérieures du système d’exploitation Windows, il prend en charge la version 2003 de la norme décrite par RFC 3490 : Internationalizing Domain Names in Applications (IDNA).
Consultez La norme technique Unicode #46 : Traitement de compatibilité IDNA pour connaître les différences dans la façon dont ces normes gèrent des jeux de caractères particuliers.
S’applique à
GetAscii(String, Int32)
- Source:
- IdnMapping.cs
- Source:
- IdnMapping.cs
- Source:
- IdnMapping.cs
Encode une sous-chaîne d'étiquettes du nom de domaine qui inclue des caractères Unicode en dehors de la plage de caractères US-ASCII. La sous-chaîne est convertie en une chaîne de caractères Unicode affichables appartenant à la plage de caractères US-ASCII et est mise en forme selon la norme IDNA.
public:
System::String ^ GetAscii(System::String ^ unicode, int index);
public string GetAscii (string unicode, int index);
member this.GetAscii : string * int -> string
Public Function GetAscii (unicode As String, index As Integer) As String
Paramètres
- unicode
- String
Chaîne à convertir qui se compose d'une ou de plusieurs étiquettes de nom de domaine délimitées par des séparateurs d'étiquette.
- index
- Int32
Décalage de base zéro dans unicode
qui spécifie le début de la sous-chaîne à convertir. L'opération de conversion continue jusqu'à la fin de la chaîne unicode
.
Retours
Équivalent de la sous-chaîne spécifiée par les paramètres unicode
et index
qui se compose de caractères Unicode affichables dans la plage de caractère US-ASCII (U+0020 à U+007E) et mise en forme selon la norme IDNA.
Exceptions
unicode
a la valeur null
.
index
est inférieur à zéro.
- ou -
index
est supérieur à la longueur de unicode
.
unicode
est non valide selon les propriétés AllowUnassigned et UseStd3AsciiRules, ainsi que la norme IDNA.
Remarques
Les unicode
paramètres et index
définissent une sous-chaîne avec une ou plusieurs étiquettes composées de caractères Unicode valides. Les étiquettes sont séparées par des séparateurs d’étiquettes. Le premier caractère de la sous-chaîne ne peut pas commencer par un séparateur d’étiquettes, mais il peut inclure et éventuellement se terminer par un séparateur. Les séparateurs d’étiquettes sont FULL STOP (period, U+002E), IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E) et HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61). Par exemple, le nom de domaine « www.adatum.com » se compose des étiquettes, « www », « adatum » et « com », séparées par des points.
Une étiquette ne peut contenir aucun des caractères suivants :
Caractères de contrôle Unicode de U+0001 à U+001F et U+007F.
Caractères Unicode non attribués, en fonction de la valeur de la AllowUnassigned propriété .
Caractères non standard dans la plage de caractères US-ASCII, tels que les caractères SPACE (U+0020), EXCLAMATION MARK (U+0021) et LOW LINE (U+005F), selon la valeur de la UseStd3AsciiRules propriété.
Caractères interdits par une version spécifique de la norme IDNA. Pour plus d’informations sur les caractères interdits, consultez RFC 3454 : Préparation des chaînes internationalisées (« stringprep ») pour IDNA 2003 et RFC 5982 : Points de code Unicode et noms de domaine internationalisés pour les applications pour IDNA 2008.
La GetAscii méthode convertit tous les séparateurs d’étiquettes en FULL STOP (point, U+002E).
Si unicode
ne contient aucun caractère en dehors de la plage de caractères US-ASCII et qu’aucun caractère de la plage de caractères US-ASCII n’est interdit, la méthode retourne unicode
inchangé.
Notes pour les appelants
Dans .NET Framework 4.5, la IdnMapping classe prend en charge différentes versions de la norme IDNA, en fonction du système d’exploitation utilisé :
Lorsqu’il est exécuté sur Windows 8, il prend en charge la version 2008 de la norme IDNA décrite par RFC 5891 : Internationalized Domain Names in Applications (IDNA) : Protocole.
Lorsqu’il est exécuté sur des versions antérieures du système d’exploitation Windows, il prend en charge la version 2003 de la norme décrite par RFC 3490 : Internationalizing Domain Names in Applications (IDNA).
Consultez La norme technique Unicode #46 : Traitement de compatibilité IDNA pour connaître les différences dans la façon dont ces normes gèrent des jeux de caractères particuliers.
S’applique à
GetAscii(String, Int32, Int32)
- Source:
- IdnMapping.cs
- Source:
- IdnMapping.cs
- Source:
- IdnMapping.cs
Encode le nombre spécifié de caractères dans une sous-chaîne d’étiquettes de noms de domaine qui incluent des caractères Unicode en dehors de la plage de caractères US-ASCII. La sous-chaîne est convertie en une chaîne de caractères Unicode affichables appartenant à la plage de caractères US-ASCII et est mise en forme selon la norme IDNA.
public:
System::String ^ GetAscii(System::String ^ unicode, int index, int count);
public string GetAscii (string unicode, int index, int count);
member this.GetAscii : string * int * int -> string
Public Function GetAscii (unicode As String, index As Integer, count As Integer) As String
Paramètres
- unicode
- String
Chaîne à convertir qui se compose d'une ou de plusieurs étiquettes de nom de domaine délimitées par des séparateurs d'étiquette.
- index
- Int32
Offset de base zéro dans unicode
qui spécifie le début de la sous-chaîne.
- count
- Int32
Nombre de caractères à convertir dans la sous-chaîne qui démarre à la position spécifiée par index
et la chaîne unicode
.
Retours
Équivalent de la sous-chaîne spécifiée par les paramètres unicode
, index
et count
, qui se compose de caractères Unicode affichables dans la plage de caractère US-ASCII (U+0020 à U+007E) et mise en forme selon la norme IDNA.
Exceptions
unicode
a la valeur null
.
index
ou count
est inférieur à zéro.
- ou -
index
est supérieur à la longueur de unicode
.
- ou -
index
est supérieur à la longueur de unicode
moins count
.
unicode
est non valide selon les propriétés AllowUnassigned et UseStd3AsciiRules, ainsi que la norme IDNA.
Exemples
L’exemple suivant utilise la GetAscii(String, Int32, Int32) méthode pour convertir un nom de domaine internationalisé en un nom de domaine conforme à la norme IDNA. La GetUnicode(String, Int32, Int32) méthode convertit ensuite le nom de domaine standardisé en nom de domaine d’origine, mais remplace les séparateurs d’étiquettes d’origine par le séparateur d’étiquette standard.
// This example demonstrates the GetAscii and GetUnicode methods.
// For sake of illustration, this example uses the most complex
// form of those methods, not the most convenient.
using System;
using System.Globalization;
class Sample
{
public static void Main()
{
/*
Define a domain name consisting of the labels: GREEK SMALL LETTER
PI (U+03C0); IDEOGRAPHIC FULL STOP (U+3002); GREEK SMALL LETTER
THETA (U+03B8); FULLWIDTH FULL STOP (U+FF0E); and "com".
*/
string name = "\u03C0\u3002\u03B8\uFF0Ecom";
string international;
string nonInternational;
string msg1 = "the original non-internationalized \ndomain name:";
string msg2 = "Allow unassigned characters?: {0}";
string msg3 = "Use non-internationalized rules?: {0}";
string msg4 = "Convert the non-internationalized domain name to international format...";
string msg5 = "Display the encoded domain name:\n\"{0}\"";
string msg6 = "the encoded domain name:";
string msg7 = "Convert the internationalized domain name to non-international format...";
string msg8 = "the reconstituted non-internationalized \ndomain name:";
string msg9 = "Visually compare the code points of the reconstituted string to the " +
"original.\n" +
"Note that the reconstituted string contains standard label " +
"separators (U+002e).";
// ----------------------------------------------------------------------------
CodePoints(name, msg1);
// ----------------------------------------------------------------------------
IdnMapping idn = new IdnMapping();
Console.WriteLine(msg2, idn.AllowUnassigned);
Console.WriteLine(msg3, idn.UseStd3AsciiRules);
Console.WriteLine();
// ----------------------------------------------------------------------------
Console.WriteLine(msg4);
international = idn.GetAscii(name, 0, name.Length);
Console.WriteLine(msg5, international);
Console.WriteLine();
CodePoints(international, msg6);
// ----------------------------------------------------------------------------
Console.WriteLine(msg7);
nonInternational = idn.GetUnicode(international, 0, international.Length);
CodePoints(nonInternational, msg8);
Console.WriteLine(msg9);
}
// ----------------------------------------------------------------------------
static void CodePoints(string value, string title)
{
Console.WriteLine("Display the Unicode code points of {0}", title);
foreach (char c in value)
{
Console.Write("{0:x4} ", Convert.ToInt32(c));
}
Console.WriteLine();
Console.WriteLine();
}
}
/*
This code example produces the following results:
Display the Unicode code points of the original non-internationalized
domain name:
03c0 3002 03b8 ff0e 0063 006f 006d
Allow unassigned characters?: False
Use non-internationalized rules?: False
Convert the non-internationalized domain name to international format...
Display the encoded domain name:
"xn--1xa.xn--txa.com"
Display the Unicode code points of the encoded domain name:
0078 006e 002d 002d 0031 0078 0061 002e 0078 006e 002d 002d 0074 0078 0061 002e 0063 006f
006d
Convert the internationalized domain name to non-international format...
Display the Unicode code points of the reconstituted non-internationalized
domain name:
03c0 002e 03b8 002e 0063 006f 006d
Visually compare the code points of the reconstituted string to the original.
Note that the reconstituted string contains standard label separators (U+002e).
*/
' This example demonstrates the GetAscii and GetUnicode methods.
' For sake of illustration, this example uses the most complex
' form of those methods, not the most convenient.
Imports System.Globalization
Class Sample
Public Shared Sub Main()
' Define a domain name consisting of the labels: GREEK SMALL LETTER
' PI (U+03C0); IDEOGRAPHIC FULL STOP (U+3002); GREEK SMALL LETTER
' THETA (U+03B8); FULLWIDTH FULL STOP (U+FF0E); and "com".
Dim name As String = "π。θ.com"
Dim international As String
Dim nonInternational As String
Dim msg1 As String = "the original non-internationalized " & vbCrLf & "domain name:"
Dim msg2 As String = "Allow unassigned characters?: {0}"
Dim msg3 As String = "Use non-internationalized rules?: {0}"
Dim msg4 As String = "Convert the non-internationalized domain name to international format..."
Dim msg5 As String = "Display the encoded domain name:" & vbCrLf & """{0}"""
Dim msg6 As String = "the encoded domain name:"
Dim msg7 As String = "Convert the internationalized domain name to non-international format..."
Dim msg8 As String = "the reconstituted non-internationalized " & vbCrLf & "domain name:"
Dim msg9 As String = "Visually compare the code points of the reconstituted string to the " & _
"original." & vbCrLf & _
"Note that the reconstituted string contains standard label " & _
"separators (U+002e)."
' ----------------------------------------------------------------------------
CodePoints(name, msg1)
' ----------------------------------------------------------------------------
Dim idn As New IdnMapping()
Console.WriteLine(msg2, idn.AllowUnassigned)
Console.WriteLine(msg3, idn.UseStd3AsciiRules)
Console.WriteLine()
' ----------------------------------------------------------------------------
Console.WriteLine(msg4)
international = idn.GetAscii(name, 0, name.Length)
Console.WriteLine(msg5, international)
Console.WriteLine()
CodePoints(international, msg6)
' ----------------------------------------------------------------------------
Console.WriteLine(msg7)
nonInternational = idn.GetUnicode(international, 0, international.Length)
CodePoints(nonInternational, msg8)
Console.WriteLine(msg9)
End Sub
' ----------------------------------------------------------------------------
Shared Sub CodePoints(ByVal value As String, ByVal title As String)
Console.WriteLine("Display the Unicode code points of {0}", title)
Dim c As Char
For Each c In value
Console.Write("{0:x4} ", Convert.ToInt32(c))
Next c
Console.WriteLine()
Console.WriteLine()
End Sub
End Class
'
'This code example produces the following results:
'
'Display the Unicode code points of the original non-internationalized
'domain name:
'03c0 3002 03b8 ff0e 0063 006f 006d
'
'Allow unassigned characters?: False
'Use non-internationalized rules?: False
'
'Convert the non-internationalized domain name to international format...
'Display the encoded domain name:
'"xn--1xa.xn--txa.com"
'
'Display the Unicode code points of the encoded domain name:
'0078 006e 002d 002d 0031 0078 0061 002e 0078 006e 002d 002d 0074 0078 0061 002e 0063 006f
'006d
'
'Convert the internationalized domain name to non-international format...
'Display the Unicode code points of the reconstituted non-internationalized
'domain name:
'03c0 002e 03b8 002e 0063 006f 006d
'
'Visually compare the code points of the reconstituted string to the original.
'Note that the reconstituted string contains standard label separators (U+002e).
'
Remarques
Les Unicode
paramètres , index
et count
définissent une sous-chaîne avec une ou plusieurs étiquettes composées de caractères Unicode valides. Les étiquettes sont séparées par des séparateurs d’étiquettes. Le premier caractère de la sous-chaîne ne peut pas commencer par un séparateur d’étiquettes, mais il peut inclure et éventuellement se terminer par un séparateur. Les séparateurs d’étiquettes sont FULL STOP (period, U+002E), IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E) et HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61). Par exemple, le nom de domaine « www.adatum.com » se compose des étiquettes, « www », « adatum » et « com », séparées par des points.
Une étiquette ne peut contenir aucun des caractères suivants :
Caractères de contrôle Unicode de U+0001 à U+001F et U+007F.
Caractères Unicode non attribués, en fonction de la valeur de la AllowUnassigned propriété .
Caractères non standard dans la plage de caractères US-ASCII, tels que les caractères SPACE (U+0020), EXCLAMATION MARK (U+0021) et LOW LINE (U+005F), selon la valeur de la UseStd3AsciiRules propriété.
Caractères interdits par une version spécifique de la norme IDNA. Pour plus d’informations sur les caractères interdits, consultez RFC 3454 : Préparation des chaînes internationalisées (« stringprep ») pour IDNA 2003 et RFC 5982 : Points de code Unicode et noms de domaine internationalisés pour les applications pour IDNA 2008.
La GetAscii méthode convertit tous les séparateurs d’étiquettes en FULL STOP (point, U+002E). Si la sous-chaîne ne contient aucun caractère en dehors de la plage de caractères US-ASCII et qu’aucun caractère dans la plage de caractères US-ASCII n’est interdit, la méthode retourne la sous-chaîne inchangée.
Notes pour les appelants
Dans .NET Framework 4.5, la IdnMapping classe prend en charge différentes versions de la norme IDNA, en fonction du système d’exploitation utilisé :
Lorsqu’il est exécuté sur Windows 8, il prend en charge la version 2008 de la norme IDNA décrite par RFC 5891 : Internationalized Domain Names in Applications (IDNA) : Protocole.
Lorsqu’il est exécuté sur des versions antérieures du système d’exploitation Windows, il prend en charge la version 2003 de la norme décrite par RFC 3490 : Internationalizing Domain Names in Applications (IDNA).
Consultez La norme technique Unicode #46 : Traitement de compatibilité IDNA pour connaître les différences dans la façon dont ces normes gèrent des jeux de caractères particuliers.