Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

IdnMapping, classe

Prend en charge l'utilisation de caractères non ASCII pour les noms de domaines Internet. Cette classe ne peut pas être héritée.

System.Object
  System.Globalization.IdnMapping

Espace de noms :  System.Globalization
Assembly :  mscorlib (dans mscorlib.dll)

public sealed class IdnMapping

Le type IdnMapping expose les membres suivants.

  NomDescription
Méthode publiqueIdnMappingInitialise une nouvelle instance de la classe IdnMapping.
Début

  NomDescription
Propriété publiqueAllowUnassignedObtient 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.
Propriété publiqueUseStd3AsciiRulesObtient 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.
Début

  NomDescription
Méthode publiqueEqualsIndique si un objet spécifié et l'objet IdnMapping actif sont égaux. (Substitue Object.Equals(Object).)
Méthode publiqueGetAscii(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.
Méthode publiqueGetAscii(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.
Méthode publiqueGetAscii(String, Int32, Int32)Encode le nombre spécifié de caractères d'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.
Méthode publiqueGetHashCodeRetourne un code de hachage pour cet objet IdnMapping. (Substitue Object.GetHashCode().)
Méthode publiqueGetTypeObtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publiqueGetUnicode(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.
Méthode publiqueGetUnicode(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.
Méthode publiqueGetUnicode(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.
Méthode publiqueToStringRetourne une chaîne qui représente l'objet actif. (Hérité de Object.)
Début

Un nom de domaine Internet se compose d'un ou plusieurs parties, appelées étiquettes de nom de domaine, séparées par les séparateurs d'étiquette. Par exemple, le nom de domaine "www.proseware.com" se compose des étiquettes "www", "proseware" et "com", séparées par des points. Les noms de domaine standards se composent de caractères affichés dans la plage de caractères US-ASCII (ou Basic Latin), d'U+0021 à U+007E. Pour faciliter l'utilisation d'Internet dans les cultures qui n'utilisent pas le jeu de caractères US-ASCII, les noms de domaines d'internationalisation dans le standard des applications (IDNA) ont été adoptés en 2003 pour prendre en charge l'inclusion des caractères Unicode en dehors de la plage de caractères US-ASCII. Toutefois, les serveurs de noms et la résolution de nom de domaine continuent à compter sur des caractères de la plage de caractères US-ASCII.

Le mécanisme d'IDNA utilise Punycode pour mapper un nom de domaine international qui contient des caractères Unicode en dehors de la plage de caractères US-ASCII à la plage de caractères US-ASCII prise en charge par le DNS. Le système IDNA est utilisé pour convertir uniquement des noms de domaines, et non pas pour transmettre des données sur Internet.

Remarque importanteImportant

Dans .NET Framework 4.5, la classe IdnMapping prend en charge différentes versions du standard d'IDNA, selon le système d'exploitation utilisé :

Consultez Technique standard Unicode #46 Unicode : Traitement de compatibilité d'IDNA pour les différences dans la manière dont ces normes gèrent des groupes particuliers de caractères.

La méthode IdnMapping.GetAscii 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 ("xn--") d'encodage compatible ASCII (ACE) à chaque étiquette. La méthode IdnMapping.GetUnicode restaure les étiquettes de nom de domaine converties par la méthode GetAscii.

Si la chaîne à convertir inclut le POINT IDÉOGRAPHIQUE de caractères séparateurs d'étiquette (U+3002), le POINT de GRANDE LARGEUR (Spoofing U+FF0E), et le POINT IDÉOGRAPHIQUE de DEMI-LARGEUR (U+FF61), la méthode GetAscii les convertit en POINT de séparateur d'étiquette (point, U+002E). La méthode GetUnicode, toutefois, ne restaure pas le caractère de séparation d'étiquette original.

L'exemple suivant utilise la méthode GetAscii(String, Int32, Int32) pour convertir un tableau de noms de domaine internationalisés à Punycode. La méthode GetUnicode reconvertit ensuite le nom de domaine Punycode au nom de domaine d'origine, mais remplace les séparateurs d'étiquette 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 += 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


.NET Framework

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft