IdnMapping IdnMapping IdnMapping IdnMapping Class

Définition

Prend en charge l'utilisation de caractères non ASCII pour les noms de domaines Internet.Supports the use of non-ASCII characters for Internet domain names. Cette classe ne peut pas être héritée.This class cannot be inherited.

public ref class IdnMapping sealed
public sealed class IdnMapping
type IdnMapping = class
Public NotInheritable Class IdnMapping
Héritage
IdnMappingIdnMappingIdnMappingIdnMapping

Exemples

L’exemple suivant utilise la GetAscii(String, Int32, Int32) méthode pour convertir un tableau d’internationalized des noms de domaine au format Punycode.The following example uses the GetAscii(String, Int32, Int32) method to convert an array of internationalized domain names to Punycode. Le GetUnicode méthode puis convertit le nom de domaine Punycode vers le nom de domaine d’origine, mais remplace les séparateurs d’étiquette d’origine par le séparateur d’étiquette standard.The GetUnicode method then converts the Punycode domain name back to the original domain name, but replaces the original label separators with the standard label separator.

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 += String.Format("U+{0} ", Convert.ToUInt16(ch).ToString("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

Nom de domaine Internet se compose d’une ou plusieurs parties, appelées étiquettes de nom de domaine, séparées par des séparateurs d’étiquette.An Internet domain name consists of one or more parts, called domain name labels, separated by label separators. Par exemple, le nom de domaine « www.proseware.com » se compose des étiquettes, « www », « proseware » et « com », séparés par des points.For example, the domain name "www.proseware.com" consists of the labels, "www", "proseware", and "com", separated by periods. Les noms de domaine standard se composent de caractères désignées dans la plage de caractères US-ASCII (ou latins de base), à partir de U + 0021 à U + 007E.Standard domain names consist of designated characters in the US-ASCII (or Basic Latin) character range, from U+0021 to U+007E. Pour faciliter l’utilisation d’Internet dans les cultures qui n’utilisent pas le jeu de caractères US-ASCII, l’internationalisation IDNA Domain Names in Applications () standard a été adopté dans 2003 pour prendre en charge l’inclusion de caractères Unicode en dehors de la plage de caractères US-ASCII.To facilitate Internet usage in cultures that do not use the US-ASCII character set, the Internationalizing Domain Names in Applications (IDNA) standard was adopted in 2003 to support the inclusion of Unicode characters outside the US-ASCII character range. Toutefois, serveurs de noms et de résolution de noms de domaine continuent à s’appuyer sur les caractères dans la plage de caractères US-ASCII.However, name servers and domain name resolution continue to rely on characters within the US-ASCII character range.

Le système IDNA utilise Punycode pour mapper un nom de domaine internationalisé qui contient des caractères Unicode en dehors de la plage de caractères US-ASCII à la plage de caractères US-ASCII pris en charge par le système de nom de domaine.The IDNA mechanism uses Punycode to map an internationalized domain name that contains Unicode characters outside the US-ASCII character range to the US-ASCII character range supported by the domain name system. Le mécanisme IDNA est utilisé pour convertir uniquement des noms de domaine, pas les données transmises sur Internet.The IDNA mechanism is used to convert only domain names, not data transmitted over the Internet.

Important

Dans le .NET Framework 4.5.NET Framework 4.5, la IdnMapping classe prend en charge différentes versions de la norme IDNA, selon le système d’exploitation en cours d’utilisation :In the .NET Framework 4.5.NET Framework 4.5, the IdnMapping class supports different versions of the IDNA standard, depending on the operating system in use:

Consultez Unicode Technical Standard #46 : Traitement de compatibilité IDNA pour les différences dans la façon dont ces normes handle d’ensembles particuliers de caractères.See Unicode Technical Standard #46: IDNA Compatibility Processing for the differences in the way these standards handle particular sets of characters.

Le IdnMapping.GetAscii méthode normalise un nom de domaine, convertit le nom normalisé en une représentation qui se compose de caractères Unicode affichables dans la plage de point de code US-ASCII (U + 0020 à U + 007E) et ajoute un préfixe d’encodage (ACE) compatible ASCII ( » Xn-- ») à chaque contrôle label.The IdnMapping.GetAscii method normalizes a domain name, converts the normalized name to a representation that consists of displayable Unicode characters in the US-ASCII code point range (U+0020 to U+007E), and prepends an ASCII-compatible encoding (ACE) prefix ("xn--") to each label. Le IdnMapping.GetUnicode méthode restaure les étiquettes de nom de domaine convertis par le GetAscii (méthode).The IdnMapping.GetUnicode method restores the domain name labels converted by the GetAscii method.

Si la chaîne à convertir inclut le séparateur d’étiquette caractères IDÉOGRAPHIQUE (U + 3002), pleine chasse (U + FF0E) et point IDÉOGRAPHIQUE FF61 (U +), le GetAscii méthode les convertit en le séparateur d’étiquette point (point, U + 002E).If the string to be converted includes the label separator characters IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E), and HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61), the GetAscii method converts them to the label separator FULL STOP (period, U+002E). Le GetUnicode (méthode), toutefois, ne restaurez pas le caractère de séparation d’étiquette d’origine.The GetUnicode method, however, does not restore the original label separator character.

Constructeurs

IdnMapping() IdnMapping() IdnMapping() IdnMapping()

Initialise une nouvelle instance de la classe IdnMapping.Initializes a new instance of the IdnMapping class.

Propriétés

AllowUnassigned AllowUnassigned AllowUnassigned AllowUnassigned

Obtient ou définit une valeur qui indique si les points de code Unicode non assignés sont utilisés dans les opérations exécutées par les membres de l'objet IdnMapping actuel.Gets or sets a value that indicates whether unassigned Unicode code points are used in operations performed by members of the current IdnMapping object.

UseStd3AsciiRules UseStd3AsciiRules UseStd3AsciiRules UseStd3AsciiRules

Obtient ou définit une valeur qui indique si les conventions d'affectation de noms standard ou assouplies sont utilisées dans des opérations exécutées par les membres de l'objet IdnMapping actuel.Gets or sets a value that indicates whether standard or relaxed naming conventions are used in operations performed by members of the current IdnMapping object.

Méthodes

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Indique si un objet spécifié et l'objet IdnMapping actif sont égaux.Indicates whether a specified object and the current IdnMapping object are equal.

GetAscii(String) GetAscii(String) GetAscii(String) 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.Encodes a string of domain name labels that consist of Unicode characters to a string of displayable Unicode characters in the US-ASCII character range. La chaîne est mise en forme selon la norme IDNA.The string is formatted according to the IDNA standard.

GetAscii(String, Int32) GetAscii(String, Int32) GetAscii(String, Int32) 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.Encodes a substring of domain name labels that include Unicode characters outside the US-ASCII character range. 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.The substring is converted to a string of displayable Unicode characters in the US-ASCII character range and is formatted according to the IDNA standard.

GetAscii(String, Int32, Int32) GetAscii(String, Int32, Int32) GetAscii(String, Int32, Int32) GetAscii(String, Int32, Int32)

Encode le nombre spécifié de caractères dans une sous-chaîne d’étiquettes du nom de domaine qui incluent des caractères Unicode en dehors de la plage de caractères US-ASCII.Encodes the specified number of characters in a substring of domain name labels that include Unicode characters outside the US-ASCII character range. 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.The substring is converted to a string of displayable Unicode characters in the US-ASCII character range and is formatted according to the IDNA standard.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Retourne un code de hachage pour cet objet IdnMapping.Returns a hash code for this IdnMapping object.

GetType() GetType() GetType() GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Inherited from Object)
GetUnicode(String) GetUnicode(String) GetUnicode(String) 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.Decodes a string of one or more domain name labels, encoded according to the IDNA standard, to a string of Unicode characters.

GetUnicode(String, Int32) GetUnicode(String, Int32) GetUnicode(String, Int32) 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.Decodes a substring of one or more domain name labels, encoded according to the IDNA standard, to a string of Unicode characters.

GetUnicode(String, Int32, Int32) GetUnicode(String, Int32, Int32) GetUnicode(String, Int32, Int32) 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.Decodes a substring of a specified length that contains one or more domain name labels, encoded according to the IDNA standard, to a string of Unicode characters.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crée une copie superficielle de l'objet Object actuel.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Retourne une chaîne qui représente l'objet actuel.Returns a string that represents the current object.

(Inherited from Object)

S’applique à

Cohérence de thread

Toutes les méthodes publiques de IdnMapping sont thread-safe et peuvent être utilisés simultanément à partir de plusieurs threads, tant que le IdnMapping propriétés de l’instance ne sont pas également définies simultanément.All public methods of IdnMapping are thread-safe and may be used concurrently from multiple threads, as long as the IdnMapping instance's properties are not also set concurrently.

Voir aussi