IdnMapping.GetUnicode 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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
인 경우
ascii
가 AllowUnassigned 및 UseStd3AsciiRules 속성과 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
문자열의 끝까지 수행됩니다.
반환
ascii
및 index
매개 변수로 지정된 IDNA 부분 문자열에 해당하는 유니코드입니다.
예외
ascii
은 null
입니다.
ascii
가 AllowUnassigned 및 UseStd3AsciiRules 속성과 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
, index
및 count
매개 변수로 지정된 IDNA 부분 문자열에 해당하는 유니코드입니다.
예외
ascii
은 null
입니다.
index
또는 count
가 0보다 작습니다.
또는
index
이 ascii
의 길이보다 큽니다.
또는
index
가 ascii
의 길이에서 count
를 뺀 값보다 큰 경우
ascii
가 AllowUnassigned 및 UseStd3AsciiRules 속성과 IDNA 표준에 맞지 않는 경우
설명
도메인 이름, 레이블 및 레이블 구분 기호에 대한 자세한 내용은 메서드에 대한 IdnMapping.GetAscii(String, Int32, Int32) 설명을 참조하세요.
적용 대상
.NET