IdnMapping.GetUnicode Método

Definição

Decodifica uma ou mais etiquetas de nomes de domínio codificadas de acordo com o padrão IDNA numa sequência de caracteres Unicode.

Sobrecargas

Name Description
GetUnicode(String)

Decodifica uma cadeia de um ou mais rótulos de nomes de domínio, codificados de acordo com o padrão IDNA, numa sequência de caracteres Unicode.

GetUnicode(String, Int32)

Decodifica uma subcadeia de uma ou mais etiquetas de nomes de domínio, codificadas de acordo com o padrão IDNA, numa sequência de caracteres Unicode.

GetUnicode(String, Int32, Int32)

Decodifica uma subcadeia de um comprimento especificado que contém uma ou mais etiquetas de nomes de domínio, codificadas de acordo com o padrão IDNA, numa cadeia de caracteres Unicode.

GetUnicode(String)

Decodifica uma cadeia de um ou mais rótulos de nomes de domínio, codificados de acordo com o padrão IDNA, numa sequência 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

A cadeia a decodificar, que consiste em uma ou mais etiquetas no intervalo de US-ASCII caracteres (U+0020 a U+007E) codificadas de acordo com a norma IDNA.

Devoluções

O equivalente Unicode da substring IDNA especificada pelo ascii parâmetro.

Exceções

ascii é null.

ascii é inválido com base nas AllowUnassigned propriedades e UseStd3AsciiRules no padrão IDNA.

Exemplos

O exemplo seguinte utiliza o GetAscii(String) método para converter um array de nomes de domínio internacionalizados para Punycode. O GetUnicode(String) método converte então o nome de domínio Punycode de volta para o nome original, mas substitui os separadores de etiquetas originais pelo separador de etiquetas padrão.

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

Observações

Para mais informações sobre nomes de domínio, rótulos e separadores de etiquetas, consulte as observações do IdnMapping.GetAscii(String, Int32, Int32) método.

Aplica-se a

GetUnicode(String, Int32)

Decodifica uma subcadeia de uma ou mais etiquetas de nomes de domínio, codificadas de acordo com o padrão IDNA, numa sequência 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

A cadeia a decodificar, que consiste em uma ou mais etiquetas no intervalo de US-ASCII caracteres (U+0020 a U+007E) codificadas de acordo com a norma IDNA.

index
Int32

Um deslocamento baseado em zero em ascii que especifica o início da subcadeia a decodificar. A operação de decodificação continua até ao fim da ascii cadeia.

Devoluções

O equivalente Unicode da substring IDNA especificada pelos ascii parâmetros e.index

Exceções

ascii é null.

index é inferior a zero.

-ou-

index é maior do que o comprimento de ascii.

ascii é inválido com base nas AllowUnassigned propriedades e UseStd3AsciiRules no padrão IDNA.

Observações

Para mais informações sobre nomes de domínio, rótulos e separadores de etiquetas, consulte as observações do IdnMapping.GetAscii(String, Int32, Int32) método.

Aplica-se a

GetUnicode(String, Int32, Int32)

Decodifica uma subcadeia de um comprimento especificado que contém uma ou mais etiquetas de nomes de domínio, codificadas de acordo com o padrão IDNA, numa cadeia 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

A cadeia a decodificar, que consiste em uma ou mais etiquetas no intervalo de US-ASCII caracteres (U+0020 a U+007E) codificadas de acordo com a norma IDNA.

index
Int32

Um deslocamento baseado em zero em ascii que especifica o início da subcadeia.

count
Int32

O número de caracteres a converter na subcadeia que começa na posição especificada por index na ascii cadeia.

Devoluções

O equivalente Unicode da substring IDNA especificada pelos asciiparâmetros, index, e count .

Exceções

ascii é null.

index ou count é inferior a zero.

-ou-

index é maior do que o comprimento de ascii.

-ou-

index é maior que o comprimento de ascii menos count.

ascii é inválido com base nas AllowUnassigned propriedades e UseStd3AsciiRules no padrão IDNA.

Observações

Para mais informações sobre nomes de domínio, rótulos e separadores de etiquetas, consulte as observações do IdnMapping.GetAscii(String, Int32, Int32) método.

Aplica-se a