Comparteix a través de


IdnMapping.GetUnicode Método

Definición

Descodifica una o varias etiquetas de nombre de dominio codificadas según el estándar de internacionalización de nombres de dominio en las aplicaciones (IDNA) como una cadena de caracteres Unicode.

Sobrecargas

GetUnicode(String)

Descodifica una cadena de una o varias etiquetas de nombre de dominio codificadas según el estándar de internacionalización de nombres de dominio en las aplicaciones (IDNA) como una cadena de caracteres Unicode.

GetUnicode(String, Int32)

Descodifica una subcadena de una o varias etiquetas de nombre de dominio codificadas según el estándar de internacionalización de nombres de dominio en las aplicaciones (IDNA) como una cadena de caracteres Unicode.

GetUnicode(String, Int32, Int32)

Descodifica una subcadena de una longitud especificada que contiene una o varias etiquetas de nombre de dominio codificadas según el estándar IDNA como una cadena de caracteres Unicode.

GetUnicode(String)

Source:
IdnMapping.cs
Source:
IdnMapping.cs
Source:
IdnMapping.cs

Descodifica una cadena de una o varias etiquetas de nombre de dominio codificadas según el estándar de internacionalización de nombres de dominio en las aplicaciones (IDNA) como una cadena de caracteres 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

Parámetros

ascii
String

La cadena para descodificar, que consta de una o más etiquetas en el intervalo de caracteres EE.UU.-ASCII (U+0020 a U+007E) codificadas según el estándar de IDNA.

Devoluciones

El equivalente Unicode de la subcadena de IDNA especificada por el parámetro ascii.

Excepciones

ascii es null.

ascii no es válido debido a las propiedades AllowUnassigned y UseStd3AsciiRules, así como al estándar IDNA.

Ejemplos

En el ejemplo siguiente se usa el GetAscii(String) método para convertir una matriz de nombres de dominio internacionalizados en Punycode. A GetUnicode(String) continuación, el método convierte el nombre de dominio punycode en el nombre de dominio original, pero reemplaza los separadores de etiquetas originales por el separador de etiquetas 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 += $"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

Comentarios

Para obtener más información sobre los nombres de dominio, las etiquetas y los separadores de etiquetas, vea los comentarios del IdnMapping.GetAscii(String, Int32, Int32) método .

Se aplica a

GetUnicode(String, Int32)

Source:
IdnMapping.cs
Source:
IdnMapping.cs
Source:
IdnMapping.cs

Descodifica una subcadena de una o varias etiquetas de nombre de dominio codificadas según el estándar de internacionalización de nombres de dominio en las aplicaciones (IDNA) como una cadena de caracteres 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

Parámetros

ascii
String

La cadena para descodificar, que consta de una o más etiquetas en el intervalo de caracteres EE.UU.-ASCII (U+0020 a U+007E) codificadas según el estándar de IDNA.

index
Int32

Un desplazamiento de base cero en ascii que especifica el principio de la subcadena que descodificar. La operación de decodificación continúa hasta el final de la cadena ascii.

Devoluciones

El equivalente Unicode de la subcadena IDNA especificada por los parámetros ascii e index.

Excepciones

ascii es null.

index es menor que cero.

O bien

index es mayor que la longitud de ascii.

ascii no es válido debido a las propiedades AllowUnassigned y UseStd3AsciiRules, así como al estándar IDNA.

Comentarios

Para obtener más información sobre los nombres de dominio, las etiquetas y los separadores de etiquetas, vea los comentarios del IdnMapping.GetAscii(String, Int32, Int32) método .

Se aplica a

GetUnicode(String, Int32, Int32)

Source:
IdnMapping.cs
Source:
IdnMapping.cs
Source:
IdnMapping.cs

Descodifica una subcadena de una longitud especificada que contiene una o varias etiquetas de nombre de dominio codificadas según el estándar IDNA como una cadena de caracteres 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

Parámetros

ascii
String

La cadena para descodificar, que consta de una o más etiquetas en el intervalo de caracteres EE.UU.-ASCII (U+0020 a U+007E) codificadas según el estándar de IDNA.

index
Int32

Un desplazamiento de base cero en ascii que especifica el principio de la subcadena.

count
Int32

El número de caracteres para convertir en la subcadena que empieza en la posición especificada por index en la cadena ascii.

Devoluciones

El equivalente Unicode de la subcadena IDNA especificada por los parámetros ascii, index y count.

Excepciones

ascii es null.

index o count es menor que cero.

O bien

index es mayor que la longitud de ascii.

O bien

index es mayor que la longitud de ascii menos count.

ascii no es válido debido a las propiedades AllowUnassigned y UseStd3AsciiRules, así como al estándar IDNA.

Comentarios

Para obtener más información sobre los nombres de dominio, las etiquetas y los separadores de etiquetas, vea los comentarios del IdnMapping.GetAscii(String, Int32, Int32) método .

Se aplica a