Condividi tramite


IdnMapping.GetUnicode Metodo

Definizione

Decodifica uno o più etichette del nome di dominio codificate in base allo standard IDNA in una stringa di caratteri Unicode.

Overload

GetUnicode(String)

Decodifica una stringa di una o più etichette del nome 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 del nome 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 contenente una o più etichette del nome di dominio codificate in base allo standard IDNA in una stringa di caratteri Unicode.

GetUnicode(String)

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

Decodifica una stringa di una o più etichette del nome 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 (U+0020 to U+007E) codificate in base allo standard IDNA.

Restituisce

Equivalente Unicode della sottostringa IDNA specificata dal parametro ascii.

Eccezioni

ascii è null.

ascii non è valido in base alle proprietà AllowUnassigned 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 il nome di dominio Punycode nel nome di dominio originale, ma sostituisce i separatori di etichette originali con il separatore di etichette 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 sui nomi di dominio, le etichette e i 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

Decodifica una sottostringa di una o più etichette del nome 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 (U+0020 to U+007E) codificate in base allo standard IDNA.

index
Int32

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

Restituisce

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

Eccezioni

ascii è null.

index è minore di zero.

-oppure-

index è maggiore della lunghezza di ascii.

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

Commenti

Per altre informazioni sui nomi di dominio, le etichette e i 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

Decodifica una sottostringa di una lunghezza specificata contenente una o più etichette del nome di dominio codificate in base allo standard IDNA in 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 (U+0020 to U+007E) codificate in base allo standard IDNA.

index
Int32

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

count
Int32

Numero di caratteri da convertire nella sottostringa che inizia nella posizione specificata dal parametro index nella stringa ascii.

Restituisce

Equivalente Unicode della sottostringa IDNA specificata dai parametri ascii, index e 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 proprietà AllowUnassigned e UseStd3AsciiRules e allo standard IDNA.

Commenti

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

Si applica a