IdnMapping.GetUnicode Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 .