IdnMapping.GetUnicode Metoda

Definice

Dekóduje jeden nebo více popisků názvu domény kódované podle standardu IDNA na řetězec znaků Unicode.

Přetížení

Name Description
GetUnicode(String)

Dekóduje řetězec jednoho nebo více popisků názvu domény zakódovaný podle standardu IDNA na řetězec znaků Unicode.

GetUnicode(String, Int32)

Dekóduje podřetězce jednoho nebo více popisků názvu domény kódované podle standardu IDNA na řetězec znaků Unicode.

GetUnicode(String, Int32, Int32)

Dekóduje podřetězce zadané délky, která obsahuje jeden nebo více popisků názvu domény kódované podle standardu IDNA, na řetězec znaků Unicode.

GetUnicode(String)

Zdroj:
IdnMapping.cs
Zdroj:
IdnMapping.cs
Zdroj:
IdnMapping.cs
Zdroj:
IdnMapping.cs
Zdroj:
IdnMapping.cs

Dekóduje řetězec jednoho nebo více popisků názvu domény zakódovaný podle standardu IDNA na řetězec znaků 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

Parametry

ascii
String

Řetězec pro dekódování, který se skládá z jednoho nebo více popisků v rozsahu znaků US-ASCII (U+0020 až U+007E) kódovaný podle standardu IDNA.

Návraty

Ekvivalent kódování Unicode podřetětěce IDNA určeného parametrem ascii .

Výjimky

ascii je null.

ascii je neplatná na AllowUnassigned základě vlastností a UseStd3AsciiRules standardu IDNA.

Příklady

Následující příklad používá metodu GetAscii(String) k převodu pole mezinárodních názvů domén na Punycode. Metoda GetUnicode(String) pak převede název domény Punycode zpět na původní název domény, ale nahradí původní oddělovače popisků standardní oddělovač štítků.

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

Poznámky

Další informace o názvech domén, popiscích a oddělovacích popisků najdete v poznámkách k IdnMapping.GetAscii(String, Int32, Int32) metodě.

Platí pro

GetUnicode(String, Int32)

Zdroj:
IdnMapping.cs
Zdroj:
IdnMapping.cs
Zdroj:
IdnMapping.cs
Zdroj:
IdnMapping.cs
Zdroj:
IdnMapping.cs

Dekóduje podřetězce jednoho nebo více popisků názvu domény kódované podle standardu IDNA na řetězec znaků 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

Parametry

ascii
String

Řetězec pro dekódování, který se skládá z jednoho nebo více popisků v rozsahu znaků US-ASCII (U+0020 až U+007E) kódovaný podle standardu IDNA.

index
Int32

Posun ascii založený na nule, který určuje začátek podřetězdce, který má dekódovat. Operace dekódování pokračuje na konec ascii řetězce.

Návraty

Ekvivalent kódování Unicode podřetětětce IDNA určených parametry ascii a index

Výjimky

ascii je null.

Hodnota index je menší než nula.

nebo

index je větší než délka ascii.

ascii je neplatná na AllowUnassigned základě vlastností a UseStd3AsciiRules standardu IDNA.

Poznámky

Další informace o názvech domén, popiscích a oddělovacích popisků najdete v poznámkách k IdnMapping.GetAscii(String, Int32, Int32) metodě.

Platí pro

GetUnicode(String, Int32, Int32)

Zdroj:
IdnMapping.cs
Zdroj:
IdnMapping.cs
Zdroj:
IdnMapping.cs
Zdroj:
IdnMapping.cs
Zdroj:
IdnMapping.cs

Dekóduje podřetězce zadané délky, která obsahuje jeden nebo více popisků názvu domény kódované podle standardu IDNA, na řetězec znaků 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

Parametry

ascii
String

Řetězec pro dekódování, který se skládá z jednoho nebo více popisků v rozsahu znaků US-ASCII (U+0020 až U+007E) kódovaný podle standardu IDNA.

index
Int32

Posun ascii založený na nule, který určuje začátek podřetězdce.

count
Int32

Počet znaků, které se mají převést v podřetězci, která začíná na pozici určené index v řetězci ascii .

Návraty

Ekvivalent kódování Unicode podřetětěce IDNA určeného asciiparametrem , indexa count parametry.

Výjimky

ascii je null.

index nebo count je menší než nula.

nebo

index je větší než délka ascii.

nebo

index je větší než délka ascii minus count.

ascii je neplatná na AllowUnassigned základě vlastností a UseStd3AsciiRules standardu IDNA.

Poznámky

Další informace o názvech domén, popiscích a oddělovacích popisků najdete v poznámkách k IdnMapping.GetAscii(String, Int32, Int32) metodě.

Platí pro