IdnMapping.GetUnicode 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.
Décode une ou plusieurs étiquettes de noms de domaine encodées selon la norme IDNA dans une chaîne de caractères Unicode.
Surcharges
GetUnicode(String) |
Décode une chaîne d'une ou de plusieurs étiquettes de noms de domaine encodées selon la norme IDNA dans une chaîne de caractères Unicode. |
GetUnicode(String, Int32) |
Décode une sous-chaîne d'une ou de plusieurs étiquettes de noms de domaine encodées selon la norme IDNA dans une chaîne de caractères Unicode. |
GetUnicode(String, Int32, Int32) |
Décode une sous-chaîne d'une longueur spécifiée qui contient une ou plusieurs étiquettes de nom de domaine, encodées selon la norme IDNA en une chaîne de caractères Unicode. |
GetUnicode(String)
- Source:
- IdnMapping.cs
- Source:
- IdnMapping.cs
- Source:
- IdnMapping.cs
Décode une chaîne d'une ou de plusieurs étiquettes de noms de domaine encodées selon la norme IDNA dans une chaîne de caractères Unicode.
public:
System::String ^ GetUnicode(System::String ^ ascii);
public string GetUnicode (string ascii);
member this.GetUnicode : string -> string
Public Function GetUnicode (ascii As String) As String
Paramètres
- ascii
- String
Chaîne à décoder, qui se compose d'une ou plusieurs étiquettes dans la plage de caractères US-ASCII (U+0020 à U+007E), encodées selon la norme IDNA.
Retours
Équivalent Unicode de la sous-chaîne IDNA spécifiée par le paramètre ascii
.
Exceptions
ascii
a la valeur null
.
ascii
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. 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
Pour plus d’informations sur les noms de domaine, les étiquettes et les séparateurs d’étiquettes, consultez les remarques relatives à la IdnMapping.GetAscii(String, Int32, Int32) méthode .
S’applique à
GetUnicode(String, Int32)
- Source:
- IdnMapping.cs
- Source:
- IdnMapping.cs
- Source:
- IdnMapping.cs
Décode une sous-chaîne d'une ou de plusieurs étiquettes de noms de domaine encodées selon la norme IDNA dans une chaîne de caractères Unicode.
public:
System::String ^ GetUnicode(System::String ^ ascii, int index);
public string GetUnicode (string ascii, int index);
member this.GetUnicode : string * int -> string
Public Function GetUnicode (ascii As String, index As Integer) As String
Paramètres
- ascii
- String
Chaîne à décoder, qui se compose d'une ou plusieurs étiquettes dans la plage de caractères US-ASCII (U+0020 à U+007E), encodées selon la norme IDNA.
- index
- Int32
Décalage de base zéro dans ascii
qui spécifie le début de la sous-chaîne à décoder. L'opération de décodage continue jusqu'à la fin de la chaîne ascii
.
Retours
Équivalent Unicode de la sous-chaîne IDNA spécifiée par les paramètres ascii
et index
.
Exceptions
ascii
a la valeur null
.
index
est inférieur à zéro.
- ou -
index
est supérieur à la longueur de ascii
.
ascii
est non valide selon les propriétés AllowUnassigned et UseStd3AsciiRules, ainsi que la norme IDNA.
Remarques
Pour plus d’informations sur les noms de domaine, les étiquettes et les séparateurs d’étiquettes, consultez les remarques relatives à la IdnMapping.GetAscii(String, Int32, Int32) méthode .
S’applique à
GetUnicode(String, Int32, Int32)
- Source:
- IdnMapping.cs
- Source:
- IdnMapping.cs
- Source:
- IdnMapping.cs
Décode une sous-chaîne d'une longueur spécifiée qui contient une ou plusieurs étiquettes de nom de domaine, encodées selon la norme IDNA en une chaîne de caractères Unicode.
public:
System::String ^ GetUnicode(System::String ^ ascii, int index, int count);
public string GetUnicode (string ascii, int index, int count);
member this.GetUnicode : string * int * int -> string
Public Function GetUnicode (ascii As String, index As Integer, count As Integer) As String
Paramètres
- ascii
- String
Chaîne à décoder, qui se compose d'une ou plusieurs étiquettes dans la plage de caractères US-ASCII (U+0020 à U+007E), encodées selon la norme IDNA.
- index
- Int32
Offset de base zéro dans ascii
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 ascii
.
Retours
Équivalent Unicode de la sous-chaîne IDNA spécifiée par les paramètres ascii
, index
et count
.
Exceptions
ascii
a la valeur null
.
index
ou count
est inférieur à zéro.
- ou -
index
est supérieur à la longueur de ascii
.
- ou -
index
est supérieur à la longueur de ascii
moins count
.
ascii
est non valide selon les propriétés AllowUnassigned et UseStd3AsciiRules, ainsi que la norme IDNA.
Remarques
Pour plus d’informations sur les noms de domaine, les étiquettes et les séparateurs d’étiquettes, consultez les remarques relatives à la IdnMapping.GetAscii(String, Int32, Int32) méthode .