IdnMapping.GetUnicode 메서드

정의

IDNA 표준에 따라 인코딩된 하나 이상의 도메인 이름 레이블을 유니코드 문자열로 디코딩합니다.

오버로드

GetUnicode(String)

IDNA 표준에 따라 인코딩된 하나 이상의 도메인 이름 레이블의 문자열을 유니코드 문자열로 디코딩합니다.

GetUnicode(String, Int32)

IDNA 표준에 따라 인코딩된 하나 이상의 도메인 이름 레이블의 하위 문자열을 유니코드 문자열로 디코딩합니다.

GetUnicode(String, Int32, Int32)

IDNA표준에 따라 인코딩된 하나 이상의 도메인 이름 레이블을 포함하는 지정된 길이의 부분 문자열을 유니코드 문자의 문자열로 디코딩합니다.

GetUnicode(String)

Source:
IdnMapping.cs
Source:
IdnMapping.cs
Source:
IdnMapping.cs

IDNA 표준에 따라 인코딩된 하나 이상의 도메인 이름 레이블의 문자열을 유니코드 문자열로 디코딩합니다.

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

매개 변수

ascii
String

디코딩할 문자열로, IDNA 표준에 따라 인코딩된 US-ASCII 문자 범위(U+0020 ~ U+007E)에 있는 하나 이상의 레이블로 구성됩니다.

반환

ascii 매개 변수로 지정된 IDNA 부분 문자열에 해당하는 유니코드입니다.

예외

ascii이(가) null인 경우

asciiAllowUnassignedUseStd3AsciiRules 속성과 IDNA 표준에 맞지 않는 경우

예제

다음 예제에서는 메서드를 GetAscii(String) 사용하여 국제화된 도메인 이름 배열을 Punycode로 변환합니다. 그런 다음, 메서드는 GetUnicode(String) Punycode 도메인 이름을 원래 도메인 이름으로 다시 변환하지만 원래 레이블 구분 기호를 표준 레이블 구분 기호로 바꿉니다.

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

설명

도메인 이름, 레이블 및 레이블 구분 기호에 대한 자세한 내용은 메서드에 대한 IdnMapping.GetAscii(String, Int32, Int32) 설명을 참조하세요.

적용 대상

GetUnicode(String, Int32)

Source:
IdnMapping.cs
Source:
IdnMapping.cs
Source:
IdnMapping.cs

IDNA 표준에 따라 인코딩된 하나 이상의 도메인 이름 레이블의 하위 문자열을 유니코드 문자열로 디코딩합니다.

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

매개 변수

ascii
String

디코딩할 문자열로, IDNA 표준에 따라 인코딩된 US-ASCII 문자 범위(U+0020 ~ U+007E)에 있는 하나 이상의 레이블로 구성됩니다.

index
Int32

0부터 시작하는 오프셋으로, ascii에서 디코딩할 부분 문자열의 시작을 지정합니다. 디코딩 작업은 ascii 문자열의 끝까지 수행됩니다.

반환

asciiindex 매개 변수로 지정된 IDNA 부분 문자열에 해당하는 유니코드입니다.

예외

asciinull입니다.

index가 0보다 작은 경우

또는

indexascii의 길이보다 큽니다.

asciiAllowUnassignedUseStd3AsciiRules 속성과 IDNA 표준에 맞지 않는 경우

설명

도메인 이름, 레이블 및 레이블 구분 기호에 대한 자세한 내용은 메서드에 대한 IdnMapping.GetAscii(String, Int32, Int32) 설명을 참조하세요.

적용 대상

GetUnicode(String, Int32, Int32)

Source:
IdnMapping.cs
Source:
IdnMapping.cs
Source:
IdnMapping.cs

IDNA표준에 따라 인코딩된 하나 이상의 도메인 이름 레이블을 포함하는 지정된 길이의 부분 문자열을 유니코드 문자의 문자열로 디코딩합니다.

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

매개 변수

ascii
String

디코딩할 문자열로, IDNA 표준에 따라 인코딩된 US-ASCII 문자 범위(U+0020 ~ U+007E)에 있는 하나 이상의 레이블로 구성됩니다.

index
Int32

0부터 시작하는 오프셋으로, ascii에서 부분 문자열의 시작을 지정합니다.

count
Int32

index 문자열의 ascii가 지정한 위치에서 시작하는 하위 문자열 중 변환할 문자 수입니다.

반환

ascii, indexcount 매개 변수로 지정된 IDNA 부분 문자열에 해당하는 유니코드입니다.

예외

asciinull입니다.

index 또는 count가 0보다 작습니다.

또는

indexascii의 길이보다 큽니다.

또는

indexascii의 길이에서 count를 뺀 값보다 큰 경우

asciiAllowUnassignedUseStd3AsciiRules 속성과 IDNA 표준에 맞지 않는 경우

설명

도메인 이름, 레이블 및 레이블 구분 기호에 대한 자세한 내용은 메서드에 대한 IdnMapping.GetAscii(String, Int32, Int32) 설명을 참조하세요.

적용 대상