Bagikan melalui


IdnMapping.GetUnicode Metode

Definisi

Mendekode satu atau beberapa label nama domain yang dikodekan sesuai dengan standar IDNA ke string karakter Unicode.

Overload

GetUnicode(String)

Mendekode string satu atau beberapa label nama domain, dikodekan sesuai dengan standar IDNA, ke string karakter Unicode.

GetUnicode(String, Int32)

Mendekode substring dari satu atau beberapa label nama domain, yang dikodekan sesuai dengan standar IDNA, ke string karakter Unicode.

GetUnicode(String, Int32, Int32)

Mendekode substring dengan panjang tertentu yang berisi satu atau beberapa label nama domain, dikodekan sesuai dengan standar IDNA, ke string karakter Unicode.

GetUnicode(String)

Sumber:
IdnMapping.cs
Sumber:
IdnMapping.cs
Sumber:
IdnMapping.cs

Mendekode string satu atau beberapa label nama domain, dikodekan sesuai dengan standar IDNA, ke string karakter 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

Parameter

ascii
String

String yang akan didekodekan, yang terdiri dari satu atau beberapa label dalam rentang karakter AS-ASCII (U+0020 hingga U+007E) yang dikodekan sesuai dengan standar IDNA.

Mengembalikan

Unicode yang setara dengan substring IDNA yang ditentukan oleh ascii parameter .

Pengecualian

asciiadalah null.

ascii tidak valid berdasarkan AllowUnassigned properti dan UseStd3AsciiRules , dan standar IDNA.

Contoh

Contoh berikut menggunakan GetAscii(String) metode untuk mengonversi array nama domain internasional ke Punycode. Metode ini GetUnicode(String) kemudian mengonversi nama domain Punycode kembali ke nama domain asli, tetapi mengganti pemisah label asli dengan pemisah label standar.

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

Keterangan

Untuk informasi selengkapnya tentang nama domain, label, dan pemisah label, lihat keterangan untuk metode tersebut IdnMapping.GetAscii(String, Int32, Int32) .

Berlaku untuk

GetUnicode(String, Int32)

Sumber:
IdnMapping.cs
Sumber:
IdnMapping.cs
Sumber:
IdnMapping.cs

Mendekode substring dari satu atau beberapa label nama domain, yang dikodekan sesuai dengan standar IDNA, ke string karakter 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

Parameter

ascii
String

String yang akan didekodekan, yang terdiri dari satu atau beberapa label dalam rentang karakter AS-ASCII (U+0020 hingga U+007E) yang dikodekan sesuai dengan standar IDNA.

index
Int32

Offset berbasis nol ke dalam ascii yang menentukan awal substring untuk didekode. Operasi pendekodean berlanjut ke akhir ascii string.

Mengembalikan

Unicode yang setara dengan substring IDNA yang ditentukan oleh ascii parameter dan index .

Pengecualian

asciiadalah null.

index kurang dari nol.

-atau-

index lebih besar dari panjang ascii.

ascii tidak valid berdasarkan AllowUnassigned properti dan UseStd3AsciiRules , dan standar IDNA.

Keterangan

Untuk informasi selengkapnya tentang nama domain, label, dan pemisah label, lihat keterangan untuk metode tersebut IdnMapping.GetAscii(String, Int32, Int32) .

Berlaku untuk

GetUnicode(String, Int32, Int32)

Sumber:
IdnMapping.cs
Sumber:
IdnMapping.cs
Sumber:
IdnMapping.cs

Mendekode substring dengan panjang tertentu yang berisi satu atau beberapa label nama domain, dikodekan sesuai dengan standar IDNA, ke string karakter 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

Parameter

ascii
String

String yang akan didekodekan, yang terdiri dari satu atau beberapa label dalam rentang karakter AS-ASCII (U+0020 hingga U+007E) yang dikodekan sesuai dengan standar IDNA.

index
Int32

Offset berbasis nol ke dalam ascii yang menentukan awal substring.

count
Int32

Jumlah karakter yang akan dikonversi dalam substring yang dimulai pada posisi yang ditentukan oleh index dalam ascii string.

Mengembalikan

Unicode yang setara dengan substring IDNA yang ditentukan oleh asciiparameter , index, dan count .

Pengecualian

asciiadalah null.

index atau count kurang dari nol.

-atau-

index lebih besar dari panjang ascii.

-atau-

index lebih besar dari panjang ascii minus count.

ascii tidak valid berdasarkan AllowUnassigned properti dan UseStd3AsciiRules , dan standar IDNA.

Keterangan

Untuk informasi selengkapnya tentang nama domain, label, dan pemisah label, lihat keterangan untuk metode tersebut IdnMapping.GetAscii(String, Int32, Int32) .

Berlaku untuk