IdnMapping.GetUnicode Metodo

Definizione

Decodifica una o più etichette dei nomi di dominio codificate in base allo standard IDNA a una stringa di caratteri Unicode.

Overload

Nome Descrizione
GetUnicode(String)

Decodifica una stringa di una o più etichette dei nomi di dominio, codificate in base allo standard IDNA, in una stringa di caratteri Unicode.

GetUnicode(String, Int32)

Decodifica una sottostringa di una o più etichette dei nomi di dominio, codificate in base allo standard IDNA, in una stringa di caratteri Unicode.

GetUnicode(String, Int32, Int32)

Decodifica una sottostringa di una lunghezza specificata che contiene una o più etichette dei nomi di dominio, codificate in base allo standard IDNA, a una stringa di caratteri Unicode.

GetUnicode(String)

Origine:
IdnMapping.cs
Origine:
IdnMapping.cs
Origine:
IdnMapping.cs
Origine:
IdnMapping.cs
Origine:
IdnMapping.cs

Decodifica una stringa di una o più etichette dei nomi di dominio, codificate in base allo standard IDNA, in una stringa di caratteri 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

Parametri

ascii
String

Stringa da decodificare, costituita da una o più etichette nell'intervallo di caratteri US-ASCII (da U+0020 a U+007E) codificato in base allo standard IDNA.

Valori restituiti

Equivalente Unicode della sottostringa IDNA specificata dal ascii parametro .

Eccezioni

ascii è null.

ascii non è valido in base alle AllowUnassigned proprietà e UseStd3AsciiRules e allo standard IDNA.

Esempio

Nell'esempio seguente viene usato il GetAscii(String) metodo per convertire una matrice di nomi di dominio internazionalizzati in Punycode. Il GetUnicode(String) metodo converte quindi di nuovo il nome di dominio Punycode nel nome di dominio originale, ma sostituisce i separatori di etichetta originali con il separatore di etichetta standard.

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

Commenti

Per altre informazioni su nomi di dominio, etichette e separatori di etichette, vedere le osservazioni per il IdnMapping.GetAscii(String, Int32, Int32) metodo .

Si applica a

GetUnicode(String, Int32)

Origine:
IdnMapping.cs
Origine:
IdnMapping.cs
Origine:
IdnMapping.cs
Origine:
IdnMapping.cs
Origine:
IdnMapping.cs

Decodifica una sottostringa di una o più etichette dei nomi di dominio, codificate in base allo standard IDNA, in una stringa di caratteri 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

Parametri

ascii
String

Stringa da decodificare, costituita da una o più etichette nell'intervallo di caratteri US-ASCII (da U+0020 a U+007E) codificato in base allo standard IDNA.

index
Int32

Offset in base zero in ascii che specifica l'inizio della sottostringa da decodificare. L'operazione di decodifica continua fino alla fine della ascii stringa.

Valori restituiti

Equivalente Unicode della sottostringa IDNA specificata dai ascii parametri e index .

Eccezioni

ascii è null.

index è minore di zero.

oppure

index è maggiore della lunghezza di ascii.

ascii non è valido in base alle AllowUnassigned proprietà e UseStd3AsciiRules e allo standard IDNA.

Commenti

Per altre informazioni su nomi di dominio, etichette e separatori di etichette, vedere le osservazioni per il IdnMapping.GetAscii(String, Int32, Int32) metodo .

Si applica a

GetUnicode(String, Int32, Int32)

Origine:
IdnMapping.cs
Origine:
IdnMapping.cs
Origine:
IdnMapping.cs
Origine:
IdnMapping.cs
Origine:
IdnMapping.cs

Decodifica una sottostringa di una lunghezza specificata che contiene una o più etichette dei nomi di dominio, codificate in base allo standard IDNA, a una stringa di caratteri 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

Parametri

ascii
String

Stringa da decodificare, costituita da una o più etichette nell'intervallo di caratteri US-ASCII (da U+0020 a U+007E) codificato in base allo standard IDNA.

index
Int32

Offset in base zero in ascii che specifica l'inizio della sottostringa.

count
Int32

Numero di caratteri da convertire nella sottostringa che inizia in corrispondenza della posizione specificata da index nella ascii stringa.

Valori restituiti

Equivalente Unicode della sottostringa IDNA specificata dai asciiparametri , indexe count .

Eccezioni

ascii è null.

index o count è minore di zero.

oppure

index è maggiore della lunghezza di ascii.

oppure

index è maggiore della lunghezza di ascii meno count.

ascii non è valido in base alle AllowUnassigned proprietà e UseStd3AsciiRules e allo standard IDNA.

Commenti

Per altre informazioni su nomi di dominio, etichette e separatori di etichette, vedere le osservazioni per il IdnMapping.GetAscii(String, Int32, Int32) metodo .

Si applica a