Share via


IdnMapping.GetUnicode Método

Definição

Decodifica um ou mais rótulos de nome de domínio, codificados de acordo com o padrão IDNA, em uma cadeia de caracteres Unicode.

Sobrecargas

GetUnicode(String)

Decodifica uma cadeia de caracteres de um ou mais rótulos de nome de domínio, codificados de acordo com o padrão IDNA, em uma cadeia de caracteres Unicode.

GetUnicode(String, Int32)

Decodifica uma subcadeia de caracteres de um ou mais rótulos de nome de domínio, codificados de acordo com o padrão IDNA, em uma cadeia de caracteres Unicode.

GetUnicode(String, Int32, Int32)

Decodifica uma subcadeia de caracteres de um tamanho especificado que contém um ou mais rótulos de nome de domínio, codificados de acordo com o padrão IDNA, em uma cadeia de caracteres Unicode.

GetUnicode(String)

Origem:
IdnMapping.cs
Origem:
IdnMapping.cs
Origem:
IdnMapping.cs

Decodifica uma cadeia de caracteres de um ou mais rótulos de nome de domínio, codificados de acordo com o padrão IDNA, em uma cadeia 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 de caracteres para decodificar, que consiste em um ou mais rótulos no intervalo de caracteres US-ASCII (U+0020 U+007E) codificados de acordo com o padrão IDNA.

Retornos

O equivalente Unicode da subcadeia de caracteres IDNA especificada pelo parâmetro ascii.

Exceções

ascii é null.

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

Exemplos

O exemplo a seguir usa o GetAscii(String) método para converter uma matriz de nomes de domínio internacionalizados em Punycode. Em GetUnicode(String) seguida, o método converte o nome de domínio punycode novamente no nome de domínio original, mas substitui os separadores de rótulo originais pelo separador de rótulo 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

Comentários

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

Aplica-se a

GetUnicode(String, Int32)

Origem:
IdnMapping.cs
Origem:
IdnMapping.cs
Origem:
IdnMapping.cs

Decodifica uma subcadeia de caracteres de um ou mais rótulos de nome de domínio, codificados de acordo com o padrão IDNA, em uma cadeia 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 de caracteres para decodificar, que consiste em um ou mais rótulos no intervalo de caracteres US-ASCII (U+0020 U+007E) codificados de acordo com o padrão IDNA.

index
Int32

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

Retornos

O equivalente Unicode da subcadeia de caracteres IDNA especificada pelos parâmetros ascii e index.

Exceções

ascii é null.

index é menor que zero.

- ou -

index é maior que o comprimento do ascii.

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

Comentários

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

Aplica-se a

GetUnicode(String, Int32, Int32)

Origem:
IdnMapping.cs
Origem:
IdnMapping.cs
Origem:
IdnMapping.cs

Decodifica uma subcadeia de caracteres de um tamanho especificado que contém um ou mais rótulos de nome de domínio, codificados de acordo com o padrão IDNA, em uma 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 de caracteres para decodificar, que consiste em um ou mais rótulos no intervalo de caracteres US-ASCII (U+0020 U+007E) codificados de acordo com o padrão IDNA.

index
Int32

Um deslocamento de base zero em ascii que especifica o início da subcadeia de caracteres.

count
Int32

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

Retornos

O equivalente Unicode da subcadeia de caracteres IDNA especificada pelos parâmetros ascii, index e count.

Exceções

ascii é null.

index ou count é menor que zero.

- ou -

index é maior que o comprimento do ascii.

- ou -

index é maior que o tamanho de ascii menos count.

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

Comentários

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

Aplica-se a