IdnMapping IdnMapping IdnMapping IdnMapping Class

정의

인터넷 도메인 이름에 ASCII 문자가 아닌 문자를 사용할 수 있도록 합니다.Supports the use of non-ASCII characters for Internet domain names. 이 클래스는 상속될 수 없습니다.This class cannot be inherited.

public ref class IdnMapping sealed
public sealed class IdnMapping
type IdnMapping = class
Public NotInheritable Class IdnMapping
상속
IdnMappingIdnMappingIdnMappingIdnMapping

예제

다음 예제에서는 GetAscii(String, Int32, Int32) 배열을 변환 방법 internationalized domain name Punycode로 변환 합니다.The following example uses the GetAscii(String, Int32, Int32) method to convert an array of internationalized domain names to Punycode. GetUnicode 메서드는 다음 있는 Punycode 도메인 이름을 원래 도메인 이름으로 다시 변환 하지만 표준 레이블 구분 기호를 사용 하 여 원래 레이블 구분 기호를 바꿉니다.The GetUnicode method then converts the Punycode domain name back to the original domain name, but replaces the original label separators with the standard label separator.

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 += String.Format("U+{0} ", Convert.ToUInt16(ch).ToString("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

설명

인터넷 도메인 이름 레이블 구분 기호로 구분 된 도메인 이름 레이블의 라는 하나 이상의 부분으로 구성 됩니다.An Internet domain name consists of one or more parts, called domain name labels, separated by label separators. 예를 들어, 도메인 이름 "www.proseware.com", "www", "proseware" 레이블과 마침표로 구분 하 여 "com"으로 구성 됩니다.For example, the domain name "www.proseware.com" consists of the labels, "www", "proseware", and "com", separated by periods. 표준 도메인 이름은 US-ASCII (또는 기본 라틴 문자) 문자 범위 (u+0021 U + 007E에에서 지정 된 문자의 구성 됩니다.Standard domain names consist of designated characters in the US-ASCII (or Basic Latin) character range, from U+0021 to U+007E. 국제화 도메인 이름을 애플리케이션 (IDNA)에서 US ASCII 문자 집합을 사용 하지 않는 문화권에 대 한 인터넷 사용을 용이 하 게 표준 US-ASCII 문자 범위 외부의 유니코드 문자 포함을 지원 하기 위해 2003에 적용 됩니다.To facilitate Internet usage in cultures that do not use the US-ASCII character set, the Internationalizing Domain Names in Applications (IDNA) standard was adopted in 2003 to support the inclusion of Unicode characters outside the US-ASCII character range. 그러나 이름 서버 및 도메인 이름 확인은 US-ASCII 문자 범위 내 문자에 의존 하 여 계속 합니다.However, name servers and domain name resolution continue to rely on characters within the US-ASCII character range.

IDNA 메커니즘은 US-ASCII 문자 범위 외부의 도메인 이름 시스템에서 지 원하는 US-ASCII 문자 범위를 유니코드 문자를 포함 하는 다국어 도메인 이름을 매핑할 Punycode를 사용 합니다.The IDNA mechanism uses Punycode to map an internationalized domain name that contains Unicode characters outside the US-ASCII character range to the US-ASCII character range supported by the domain name system. IDNA 메커니즘은 인터넷을 통해 전송 하는 데이터가 아니라 도메인 이름만 변환 됩니다.The IDNA mechanism is used to convert only domain names, not data transmitted over the Internet.

중요

.NET Framework 4.5.NET Framework 4.5, IdnMapping 클래스의 사용 중인 운영 체제에 따라 IDNA 표준에 다양 한 버전 지원:In the .NET Framework 4.5.NET Framework 4.5, the IdnMapping class supports different versions of the IDNA standard, depending on the operating system in use:

참조 Unicode Technical Standard #46: IDNA 호환성 처리 이러한 표준 방식으로 차이점에 대 한 특정 문자 집합을 처리 합니다.See Unicode Technical Standard #46: IDNA Compatibility Processing for the differences in the way these standards handle particular sets of characters.

IdnMapping.GetAscii 메서드 정규화 된 도메인 이름, 정규화 된 이름 (U + 0020 ~ U + 007E), US ASCII 코드 포인트 범위에서 표시 가능한 유니코드 문자로 구성 되어 있으며 ASCII compatible encoding (ACE) 접두사를 앞에 추가 하는 표현으로 변환 (" 香 港 ") 각 레이블에 합니다.The IdnMapping.GetAscii method normalizes a domain name, converts the normalized name to a representation that consists of displayable Unicode characters in the US-ASCII code point range (U+0020 to U+007E), and prepends an ASCII-compatible encoding (ACE) prefix ("xn--") to each label. 합니다 IdnMapping.GetUnicode 메서드를 변환 하 여 도메인 이름 레이블의 복원는 GetAscii 메서드.The IdnMapping.GetUnicode method restores the domain name labels converted by the GetAscii method.

변환할 문자열 레이블 구분 기호를 포함 하는 경우 표의 마침표 문자 (U + 3002), 전체 중지 (U + FF0E) 전자 및 반자 표의 전체 중지 (U + FF61)는 GetAscii 메서드를 레이블 구분 기호로 마침표 (마침표, U + 변환 002E)입니다.If the string to be converted includes the label separator characters IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E), and HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61), the GetAscii method converts them to the label separator FULL STOP (period, U+002E). 하지만 GetUnicode 메서드는 원래 레이블 구분 기호 문자를 복원 하지 않습니다.The GetUnicode method, however, does not restore the original label separator character.

생성자

IdnMapping() IdnMapping() IdnMapping() IdnMapping()

IdnMapping 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the IdnMapping class.

속성

AllowUnassigned AllowUnassigned AllowUnassigned AllowUnassigned

현재 IdnMapping 개체의 멤버에서 수행한 작업에 할당되지 않은 유니코드 코드 포인트가 사용되었는지 여부를 나타내는 값을 가져오거나 설정합니다.Gets or sets a value that indicates whether unassigned Unicode code points are used in operations performed by members of the current IdnMapping object.

UseStd3AsciiRules UseStd3AsciiRules UseStd3AsciiRules UseStd3AsciiRules

현재 IdnMapping 개체의 멤버에서 수행한 작업에 표준 명명 규칙이 사용되었는지 또는 비표준 명명 규칙이 사용되었는지를 나타내는 값을 가져오거나 설정합니다.Gets or sets a value that indicates whether standard or relaxed naming conventions are used in operations performed by members of the current IdnMapping object.

메서드

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

지정된 개체가 현재 IdnMapping 개체와 같은지 여부를 나타냅니다.Indicates whether a specified object and the current IdnMapping object are equal.

GetAscii(String) GetAscii(String) GetAscii(String) GetAscii(String)

유니코드 문자로 구성된 도메인 이름 레이블 문자열을 US-ASCII 문자 범위에 있는 표시 가능한 유니코드 문자의 문자열로 인코딩합니다.Encodes a string of domain name labels that consist of Unicode characters to a string of displayable Unicode characters in the US-ASCII character range. 문자열은 IDNA 표준에 따라 형식이 지정됩니다.The string is formatted according to the IDNA standard.

GetAscii(String, Int32) GetAscii(String, Int32) GetAscii(String, Int32) GetAscii(String, Int32)

US-ASCII 문자 범위 외부의 유니코드 문자를 포함하는 도메인 이름 레이블의 부분 문자열을 인코딩합니다.Encodes a substring of domain name labels that include Unicode characters outside the US-ASCII character range. 하위 문자열은 US-ASCII 문자 범위의 표시 가능한 유니코드 문자열로 변환되고 IDNA 표준에 따라 형식이 지정됩니다.The substring is converted to a string of displayable Unicode characters in the US-ASCII character range and is formatted according to the IDNA standard.

GetAscii(String, Int32, Int32) GetAscii(String, Int32, Int32) GetAscii(String, Int32, Int32) GetAscii(String, Int32, Int32)

US-ASCII 문자 범위 외부의 유니코드 문자를 포함하는 도메인 이름 레이블의 부분 문자열에 있는 지정된 수의 문자를 인코딩합니다.Encodes the specified number of characters in a substring of domain name labels that include Unicode characters outside the US-ASCII character range. 하위 문자열은 US-ASCII 문자 범위의 표시 가능한 유니코드 문자열로 변환되고 IDNA 표준에 따라 형식이 지정됩니다.The substring is converted to a string of displayable Unicode characters in the US-ASCII character range and is formatted according to the IDNA standard.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

IdnMapping 개체의 해시 코드를 반환합니다.Returns a hash code for this IdnMapping object.

GetType() GetType() GetType() GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(Inherited from Object)
GetUnicode(String) GetUnicode(String) GetUnicode(String) GetUnicode(String)

IDNA 표준에 따라 인코딩된 하나 이상의 도메인 이름 레이블의 문자열을 유니코드 문자열로 디코딩합니다.Decodes a string of one or more domain name labels, encoded according to the IDNA standard, to a string of Unicode characters.

GetUnicode(String, Int32) GetUnicode(String, Int32) GetUnicode(String, Int32) GetUnicode(String, Int32)

IDNA 표준에 따라 인코딩된 하나 이상의 도메인 이름 레이블의 하위 문자열을 유니코드 문자열로 디코딩합니다.Decodes a substring of one or more domain name labels, encoded according to the IDNA standard, to a string of Unicode characters.

GetUnicode(String, Int32, Int32) GetUnicode(String, Int32, Int32) GetUnicode(String, Int32, Int32) GetUnicode(String, Int32, Int32)

IDNA표준에 따라 인코딩된 하나 이상의 도메인 이름 레이블을 포함하는 지정된 길이의 부분 문자열을 유니코드 문자의 문자열로 디코딩합니다.Decodes a substring of a specified length that contains one or more domain name labels, encoded according to the IDNA standard, to a string of Unicode characters.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(Inherited from Object)

적용 대상

스레드 보안

모든 public 메서드 IdnMapping 스레드로부터 안전 하 고 있다면 여러 스레드에서 동시에 사용할 수는 IdnMapping 인스턴스의 속성이 설정 되어 있지도 동시에 합니다.All public methods of IdnMapping are thread-safe and may be used concurrently from multiple threads, as long as the IdnMapping instance's properties are not also set concurrently.

추가 정보