IdnMapping.GetUnicode 메서드

정의

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

오버로드

Name Description
GetUnicode(String)

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

GetUnicode(String, Int32)

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

GetUnicode(String, Int32, Int32)

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

GetUnicode(String)

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 부분 문자열에 해당하는 유니코드입니다.

예외

asciinull입니다.

ascii은 및 속성 및 AllowUnassigned IDNA 표준에 UseStd3AsciiRules 따라 유효하지 않습니다.

예제

다음 예제에서는 메서드를 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)

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

디코딩할 ascii 부분 문자열의 시작을 지정하는 0부터 시작하는 오프셋입니다. 디코딩 작업은 문자열의 ascii 끝까지 계속됩니다.

반품

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

예외

asciinull입니다.

index가 0보다 작습니다.

-또는-

index 가 .의 ascii길이보다 큰 경우

ascii은 및 속성 및 AllowUnassigned IDNA 표준에 UseStd3AsciiRules 따라 유효하지 않습니다.

설명

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

적용 대상

GetUnicode(String, Int32, Int32)

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 입니다.

반품

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

예외

asciinull입니다.

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

-또는-

index 가 .의 ascii길이보다 큰 경우

-또는-

index 는 빼기의 길이 ascii 보다 큽다 count.

ascii은 및 속성 및 AllowUnassigned IDNA 표준에 UseStd3AsciiRules 따라 유효하지 않습니다.

설명

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

적용 대상