Udostępnij za pośrednictwem


IdnMapping.GetUnicode Metoda

Definicja

Dekoduje co najmniej jedną etykietę nazwy domeny zakodowaną zgodnie ze standardem IDNA do ciągu znaków Unicode.

Przeciążenia

GetUnicode(String)

Dekoduje ciąg co najmniej jednej etykiety nazwy domeny, zakodowany zgodnie ze standardem IDNA, do ciągu znaków Unicode.

GetUnicode(String, Int32)

Dekoduje podciąg jednej lub większej liczby etykiet nazw domen, zakodowanych zgodnie ze standardem IDNA, do ciągu znaków Unicode.

GetUnicode(String, Int32, Int32)

Dekoduje podciąg określonej długości, który zawiera co najmniej jedną etykietę nazwy domeny zakodowaną zgodnie ze standardem IDNA, do ciągu znaków Unicode.

GetUnicode(String)

Źródło:
IdnMapping.cs
Źródło:
IdnMapping.cs
Źródło:
IdnMapping.cs

Dekoduje ciąg co najmniej jednej etykiety nazwy domeny, zakodowany zgodnie ze standardem IDNA, do ciągu znaków 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

Ciąg do dekodowania, który składa się z co najmniej jednej etykiety w zakresie znaków US-ASCII (U+0020 do U+007E) zakodowane zgodnie ze standardem IDNA.

Zwraca

Odpowiednik Unicode podciągu IDNA określonego ascii przez parametr .

Wyjątki

ascii to null.

ascii jest nieprawidłowy na AllowUnassigned podstawie właściwości i UseStd3AsciiRules oraz standardu IDNA.

Przykłady

W poniższym przykładzie GetAscii(String) użyto metody , aby przekonwertować tablicę nazw domen międzynarodowych na punycode. Następnie GetUnicode(String) metoda konwertuje nazwę domeny Punycode z powrotem na oryginalną nazwę domeny, ale zastępuje oryginalne separatory etykiet separatorami standardowej etykiety.

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

Uwagi

Aby uzyskać więcej informacji na temat nazw domen, etykiet i separatorów etykiet, zobacz uwagi dotyczące IdnMapping.GetAscii(String, Int32, Int32) metody.

Dotyczy

GetUnicode(String, Int32)

Źródło:
IdnMapping.cs
Źródło:
IdnMapping.cs
Źródło:
IdnMapping.cs

Dekoduje podciąg jednej lub większej liczby etykiet nazw domen, zakodowanych zgodnie ze standardem IDNA, do ciągu znaków 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

Ciąg do dekodowania, który składa się z co najmniej jednej etykiety w zakresie znaków US-ASCII (U+0020 do U+007E) zakodowane zgodnie ze standardem IDNA.

index
Int32

Przesunięcie na podstawie zera, które określa początek ascii podciągnięcia do dekodowania. Operacja dekodowania jest kontynuowana na końcu ascii ciągu.

Zwraca

Odpowiednik Unicode podciągu IDNA określonego przez ascii parametry i index .

Wyjątki

ascii to null.

Parametr index ma wartość niższą niż zero.

-lub-

index jest większa niż długość obiektu ascii.

ascii jest nieprawidłowy na AllowUnassigned podstawie właściwości i UseStd3AsciiRules oraz standardu IDNA.

Uwagi

Aby uzyskać więcej informacji na temat nazw domen, etykiet i separatorów etykiet, zobacz uwagi dotyczące IdnMapping.GetAscii(String, Int32, Int32) metody.

Dotyczy

GetUnicode(String, Int32, Int32)

Źródło:
IdnMapping.cs
Źródło:
IdnMapping.cs
Źródło:
IdnMapping.cs

Dekoduje podciąg określonej długości, który zawiera co najmniej jedną etykietę nazwy domeny zakodowaną zgodnie ze standardem IDNA, do ciągu znaków 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

Ciąg do dekodowania, który składa się z co najmniej jednej etykiety w zakresie znaków US-ASCII (U+0020 do U+007E) zakodowane zgodnie ze standardem IDNA.

index
Int32

Przesunięcie na podstawie zera, ascii które określa początek podciągnięcia.

count
Int32

Liczba znaków do konwersji w podciąg, który rozpoczyna się w pozycji określonej przez index w ascii ciągu.

Zwraca

Odpowiednik Unicode podciągu IDNA określonego asciiprzez parametry , indexi count .

Wyjątki

ascii to null.

index wartość lub count jest mniejsza niż zero.

-lub-

index jest większa niż długość obiektu ascii.

-lub-

index jest większa niż długość ascii minus count.

ascii jest nieprawidłowy na AllowUnassigned podstawie właściwości i UseStd3AsciiRules oraz standardu IDNA.

Uwagi

Aby uzyskać więcej informacji na temat nazw domen, etykiet i separatorów etykiet, zobacz uwagi dotyczące IdnMapping.GetAscii(String, Int32, Int32) metody.

Dotyczy