Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase IdnMapping

 

Publicado: octubre de 2016

Admite el uso de caracteres no ASCII para los nombres de dominio de Internet. Esta clase no puede heredarse.

Espacio de nombres:   System.Globalization
Ensamblado:  mscorlib (en mscorlib.dll)

System.Object
  System.Globalization.IdnMapping

public sealed class IdnMapping

NombreDescripción
System_CAPS_pubmethodIdnMapping()

Inicializa una nueva instancia de la clase IdnMapping.

NombreDescripción
System_CAPS_pubpropertyAllowUnassigned

Obtiene o establece un valor que indica si se utilizan puntos de código Unicode sin asignar en operaciones realizadas por los miembros del actual IdnMapping objeto.

System_CAPS_pubpropertyUseStd3AsciiRules

Obtiene o establece un valor que indica si se utilizan convenciones de nomenclatura estándares o no estrictas en operaciones realizadas por los miembros del actual IdnMapping objeto.

NombreDescripción
System_CAPS_pubmethodEquals(Object)

Indica si un objeto especificado y la actual IdnMapping objeto son iguales.(Invalida Object.Equals(Object)).

System_CAPS_pubmethodGetAscii(String)

Codifica una cadena de etiquetas de nombre de dominio que constan de caracteres Unicode en una cadena de caracteres de Unicode que se pueden mostrar en el intervalo de caracteres US-ASCII. La cadena es un formato según el estándar IDNA.

System_CAPS_pubmethodGetAscii(String, Int32)

Codifica una subcadena de etiquetas de nombre de dominio que contienen caracteres Unicode fuera del intervalo de caracteres US-ASCII. La subcadena se convierte en una cadena de caracteres de Unicode que se pueden mostrar en el intervalo de caracteres US-ASCII y se da formato según el estándar IDNA.

System_CAPS_pubmethodGetAscii(String, Int32, Int32)

Codifica el número especificado de caracteres de una subcadena de etiquetas de nombre de dominio que contienen caracteres Unicode fuera del intervalo de caracteres US-ASCII. La subcadena se convierte en una cadena de caracteres de Unicode que se pueden mostrar en el intervalo de caracteres US-ASCII y se da formato según el estándar IDNA.

System_CAPS_pubmethodGetHashCode()

Devuelve un código hash para esta IdnMapping objeto.(Invalida Object.GetHashCode()).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_pubmethodGetUnicode(String)

Descodifica una cadena de uno o más etiquetas de nombre dominio, codificadas según el estándar IDNA, en una cadena de caracteres Unicode.

System_CAPS_pubmethodGetUnicode(String, Int32)

Descodifica una subcadena de una o varias etiquetas de nombre dominio, codificadas según el estándar IDNA, en una cadena de caracteres Unicode.

System_CAPS_pubmethodGetUnicode(String, Int32, Int32)

Descodifica una subcadena de una longitud especificada que contiene uno o más etiquetas de nombre dominio, codificadas según el estándar IDNA, en una cadena de caracteres Unicode.

System_CAPS_pubmethodToString()

Devuelve una cadena que representa al objeto actual. (Heredado de Object).

Un nombre de dominio de Internet está formada por una o varias partes, denominados etiquetas de nombre de dominio, separadas por separadores de etiqueta. Por ejemplo, el nombre de dominio "www.proseware.com" consta de las etiquetas, "www", "proseware" y "com", separados por puntos. Nombres de dominio estándar constan de caracteres designados en el intervalo de caracteres US-ASCII (o Latín básico), de U+10000 0021 a U+10000 007E. Para facilitar el uso de Internet en las referencias culturales que no utilizan el juego de caracteres US-ASCII, el dominio de internacionalización de nombres de las aplicaciones (IDNA) adoptado en 2003 para apoyar la inclusión de caracteres Unicode fuera del intervalo de caracteres US-ASCII estándar. Sin embargo, los servidores de nombres y resolución de nombres de dominio seguirán dependen de caracteres dentro del intervalo de caracteres US-ASCII.

El mecanismo IDNA usa Punycode para asignar nombres de dominio internacionalizado que contiene caracteres Unicode fuera del intervalo de caracteres US-ASCII en el intervalo de caracteres US-ASCII admitido por el sistema de nombres de dominio. El mecanismo IDNA se utiliza para convertir sólo los nombres de dominio, no datos transmitidos a través de Internet.

System_CAPS_importantImportante

En el .NET Framework 4.5, la IdnMapping clase es compatible con versiones diferentes del estándar IDNA, dependiendo del sistema operativo en uso:

Consulte Unicode Technical Standard #46: IDNA Compatibility Processing de las diferencias en cuanto a estos estándares controlen determinados conjuntos de caracteres.

El IdnMapping.GetAscii método normaliza un nombre de dominio, convierte el nombre normalizado en una representación formada por Unicode que se pueden mostrar caracteres en el intervalo de puntos de código (0020 a 007E) US-ASCII y antepone un prefijo de codificación (ACE) compatible con ASCII ("xn--") a cada etiqueta. El IdnMapping.GetUnicode método restaura las etiquetas de nombre de dominio convertidas por la GetAscii (método).

Si la cadena que se va a convertir incluye el separador de etiqueta caracteres ideográfico (U+10000 3002), detención completa de ancho completo (U + FF0E) y punto ideográfico (U+FF61), el GetAscii método convierte en el separador de etiquetas (punto, 002E). El GetUnicode método, sin embargo, restaure el carácter de separador de etiqueta original.

En el ejemplo siguiente se usa el GetAscii(String, Int32, Int32) internacionalizados de método para convertir una matriz de nombres de dominio a Punycode. El GetUnicode método convierte el nombre de dominio Punycode por el nombre de dominio original, pero reemplaza los separadores de etiqueta original con el separador de etiqueta estándar.

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

Plataforma universal de Windows
Disponible desde 10
.NET Framework
Disponible desde 2.0

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: