이 항목은 아직 평가되지 않았습니다.- 이 항목 평가

UnicodeEncoding 클래스

2013-12-13

유니코드 문자의 UTF-16 인코딩을 나타냅니다.

System.Object
  System.Text.Encoding
    System.Text.UnicodeEncoding

Namespace:  System.Text
어셈블리:  mscorlib(mscorlib.dll)
public class UnicodeEncoding : Encoding

UnicodeEncoding 형식에서는 다음과 같은 멤버를 노출합니다.

  이름설명
Public 메서드UnicodeEncoding()UnicodeEncoding 클래스의 새 인스턴스를 초기화합니다.
Public 메서드UnicodeEncoding(Boolean, Boolean)UnicodeEncoding 클래스의 새 인스턴스를 초기화합니다. 매개 변수를 사용하여 big-endian 바이트 순서를 사용할지 여부와 유니코드 바이트 순서 표시를 제공할지 여부를 지정할 수 있습니다.
Public 메서드UnicodeEncoding(Boolean, Boolean, Boolean)UnicodeEncoding 클래스의 새 인스턴스를 초기화합니다. 매개 변수를 사용하여 big-endian 바이트 순서를 사용할지 여부, 유니코드 바이트 순서 표시를 제공할지 여부 및 잘못된 인코딩이 검색되었을 때 예외를 발생할지 여부를 지정할 수 있습니다.
맨 위
  이름설명
Public 속성WebName파생 클래스에서 재정의된 경우 현재 인코딩에 대해 IANA(Internet Assigned Numbers Authority)에 등록된 이름을 가져옵니다. (Encoding에서 상속됨)
맨 위
  이름설명
Public 메서드Clone파생 클래스에서 재정의될 때 현재 Encoding 개체의 단순 복사본을 만듭니다. (Encoding에서 상속됨)
Public 메서드Equals지정한 Object가 현재 UnicodeEncoding 개체와 같은지 여부를 확인합니다. (Encoding.Equals(Object)을(를) 재정의함)
Protected 메서드Finalize가비지 수집기에서 Object를 회수하기 전에 개체가 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다. (Object에서 상속됨)
Public 메서드GetByteCount(Char[])파생 클래스에서 재정의된 경우 지정한 문자 배열의 모든 문자를 인코딩하여 생성되는 바이트 수를 계산합니다. (Encoding에서 상속됨)
Public 메서드GetByteCount(String)지정한 문자열의 문자를 인코딩할 경우 생성되는 바이트 수를 계산합니다. (Encoding.GetByteCount(String)을(를) 재정의함)
Public 메서드GetByteCount(Char[], Int32, Int32)지정한 문자 배열의 문자 집합을 인코딩할 경우 생성되는 바이트 수를 계산합니다. (Encoding.GetByteCount(Char[], Int32, Int32)을(를) 재정의함)
Public 메서드GetBytes(Char[])파생 클래스에서 재정의된 경우 지정한 문자 배열의 모든 문자를 바이트 시퀀스로 인코딩합니다. (Encoding에서 상속됨)
Public 메서드GetBytes(String)파생 클래스에서 재정의된 경우 지정한 문자열의 모든 문자를 바이트 시퀀스로 인코딩합니다. (Encoding에서 상속됨)
Public 메서드GetBytes(Char[], Int32, Int32)파생 클래스에서 재정의된 경우 지정한 문자 배열의 문자 집합을 바이트 시퀀스로 인코딩합니다. (Encoding에서 상속됨)
Public 메서드GetBytes(Char*, Int32, Byte*, Int32)보안 중요 지정한 문자 포인터에서 시작하는 문자 집합을 지정한 바이트 포인터에서 시작하여 저장되는 바이트 시퀀스로 인코딩합니다. (Encoding.GetBytes(Char*, Int32, Byte*, Int32)을(를) 재정의함)
Public 메서드GetBytes(Char[], Int32, Int32, Byte[], Int32)지정한 문자 배열의 문자 집합을 지정한 바이트 배열로 인코딩합니다. (Encoding.GetBytes(Char[], Int32, Int32, Byte[], Int32)을(를) 재정의함)
Public 메서드GetBytes(String, Int32, Int32, Byte[], Int32)지정된 String의 문자 집합을 지정된 바이트 배열로 인코딩합니다. (Encoding.GetBytes(String, Int32, Int32, Byte[], Int32)을(를) 재정의함)
Public 메서드GetCharCount(Byte[])파생 클래스에서 재정의된 경우 지정한 바이트 배열의 모든 바이트를 디코딩하여 생성되는 문자 수를 계산합니다. (Encoding에서 상속됨)
Public 메서드GetCharCount(Byte[], Int32, Int32)지정한 바이트 배열의 바이트 시퀀스를 디코딩할 경우 생성되는 문자 수를 계산합니다. (Encoding.GetCharCount(Byte[], Int32, Int32)을(를) 재정의함)
Public 메서드GetChars(Byte[])파생 클래스에서 재정의된 경우 지정한 바이트 배열의 모든 바이트를 문자 집합으로 디코딩합니다. (Encoding에서 상속됨)
Public 메서드GetChars(Byte[], Int32, Int32)파생 클래스에서 재정의된 경우 지정한 바이트 배열의 바이트 시퀀스를 문자 집합으로 디코딩합니다. (Encoding에서 상속됨)
Public 메서드GetChars(Byte[], Int32, Int32, Char[], Int32)지정한 바이트 배열의 바이트 시퀀스를 지정한 문자 배열로 디코딩합니다. (Encoding.GetChars(Byte[], Int32, Int32, Char[], Int32)을(를) 재정의함)
Public 메서드GetDecoderUTF-16으로 인코딩된 바이트 시퀀스를 유니코드 문자 시퀀스로 변환하는 디코더를 가져옵니다. (Encoding.GetDecoder()을(를) 재정의함)
Public 메서드GetEncoder유니코드 문자 시퀀스를 UTF-16으로 인코딩된 바이트 시퀀스로 변환하는 인코더를 가져옵니다. (Encoding.GetEncoder()을(를) 재정의함)
Public 메서드GetHashCode현재 인스턴스의 해시 코드를 반환합니다. (Encoding.GetHashCode()을(를) 재정의함)
Public 메서드GetMaxByteCount지정한 수의 문자를 인코딩할 경우 생성되는 최대 바이트 수를 계산합니다. (Encoding.GetMaxByteCount(Int32)을(를) 재정의함)
Public 메서드GetMaxCharCount지정한 수의 바이트를 디코딩할 경우 생성되는 최대 문자 수를 계산합니다. (Encoding.GetMaxCharCount(Int32)을(를) 재정의함)
Public 메서드GetPreambleUTF-16 형식으로 인코딩된 유니코드 BOM(바이트 순서 표시)을 반환합니다. (Encoding.GetPreamble()을(를) 재정의함)
Public 메서드GetString바이트 배열의 바이트 범위를 문자열로 디코딩합니다. (Encoding.GetString(Byte[], Int32, Int32)을(를) 재정의함)
Public 메서드GetType현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨)
Protected 메서드MemberwiseClone현재 Object의 단순 복사본을 만듭니다. (Object에서 상속됨)
Public 메서드ToString현재 개체를 나타내는 문자열을 반환합니다. (Object에서 상속됨)
맨 위

인코딩은 유니코드 문자 집합을 바이트 시퀀스로 변환하는 프로세스이며, 디코딩은 인코딩된 바이트 시퀀스를 유니코드 문자 집합으로 변환하는 프로세스입니다. 유니코드 표준에서는 지원되는 모든 언어의 각 문자에 코드 포인트(숫자)를 할당합니다. UTF(유니코드 변환 형식)는 코드 포인트를 인코딩하는 한 가지 방법입니다. UTF-16 인코딩은 각 코드 포인트를 1~2개의 16비트 정수 시퀀스로 나타냅니다.

인코더에서는 big-endian 바이트 순서(최상위 바이트 먼저) 또는 little-endian 바이트 순서(최하위 바이트 먼저)를 사용할 수 있습니다. 예를 들어, 라틴 대문자 A(코드 포인트 U+0041)는 다음과 같이 직렬화됩니다(16진수).

  • Big-endian 바이트 순서: 00 00 00 41

  • Little-endian 바이트 순서: 41 00 00 00

일반적으로 네이티브 바이트 순서를 사용하여 유니코드 문자를 저장하는 것이 보다 효과적입니다. 예를 들어 little-endian 플랫폼(예: Intel 컴퓨터)에서는 little-endian 바이트 순서를 사용하고 big-endian 플랫폼에서는 big-endian 바이트 순서를 사용하는 것이 좋습니다.

다음 방법 중 하나를 사용하여 UnicodeEncoding 개체를 인스턴스화할 수 있습니다.

  • Unicode 또는 BigEndianUnicode 속성에서 반환된 UnicodeEncoding 개체를 검색합니다. 첫 번째 속성은 little-endian 바이트 순서를 사용하는 인코딩 개체를 반환하고 두 번째 속성은 big-endian 바이트 순서를 사용합니다.

  • "utf-16"(little-endian 바이트 순서) 또는 "utf-16BE"(big-endian 바이트 순서)를 해당 name 매개 변수의 값으로 지정하여 GetEncoding 메서드를 호출합니다.

  • UnicodeEncoding 클래스 생성자의 오버로드 중 하나를 호출합니다. 기본 UnicodeEncoding 개체를 반환하는 다른 UnicodeEncoding 개체 인스턴스화 방법과 달리 클래스 생성자의 오버로드를 사용하면 인코딩의 바이트 순서, 인코딩에 프리앰블이 포함될지 여부 및 잘못된 인코딩이 발견되었을 때 예외를 발생시킬지 여부를 정의할 수 있습니다.

GetByteCount 메서드는 유니코드 문자 집합을 인코딩한 결과의 바이트 수를 결정하고, GetBytes 메서드는 실제 인코딩을 수행합니다.

마찬가지로 GetCharCount 메서드는 디코딩될 바이트 시퀀스의 문자 수를 결정하고, GetCharsGetString 메서드는 실제 디코딩을 수행합니다.

선택적으로 UnicodeEncoding 개체는 인코딩 프로세스의 결과로 생성되는 바이트 시퀀스의 맨 앞에 추가할 수 있는 바이트 배열인 프리앰블을 제공합니다. 프리앰블에 바이트 순서 표시(BOM)가 있으면 디코더에서 바이트 순서와 변환 형식 또는 UTF를 결정하는 데 도움이 됩니다. GetPreamble 메서드는 BOM을 포함할 수 있는 바이트 배열을 검색합니다. 바이트 순서 및 바이트 순서 표시에 대한 자세한 내용은 유니코드 홈 페이지에 있는 Unicode Standard를 참조하세요.

참고참고:

오류 검색이 가능하도록 설정하고 클래스 인스턴스를 더 안전하게 만들려면 응용프로그램에서 throwOnInvalidBytes 매개 변수를 사용하는 UnicodeEncoding 생성자를 사용하고 해당 매개 변수를 true로 설정해야 합니다. 오류 검색을 사용하면 잘못된 문자 시퀀스나 바이트 시퀀스를 검색하는 메서드가 ArgumentException을 발생시킵니다. 오류 검색을 사용하지 않으면 예외가 발생하지 않고 일반적으로 잘못된 시퀀스가 무시됩니다.

다음 예제에서는 UnicodeEncoding을 사용하여 유니코드 문자열을 바이트 배열로 인코딩하는 방법을 보여 줍니다. 바이트 배열은 문자열로 디코딩되어 데이터의 손실이 없음을 보여 줍니다.


using System;
using System.Text;

class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      // The encoding.
      UnicodeEncoding unicode = new UnicodeEncoding();

      // Create a string that contains Unicode characters.
      String unicodeString =
          "This Unicode string contains two characters " +
          "with codes outside the traditional ASCII code range, " +
          "Pi (\u03a0) and Sigma (\u03a3).";
      outputBlock.Text += "Original string:" + "\n";
      outputBlock.Text += unicodeString + "\n";

      // Encode the string.
      Byte[] encodedBytes = unicode.GetBytes(unicodeString);
      outputBlock.Text += "\n";
      outputBlock.Text += "Encoded bytes:" + "\n";
      foreach (Byte b in encodedBytes)
      {
         outputBlock.Text += String.Format("[{0}]", b);
      }
      outputBlock.Text += "\n";

      // Decode bytes back to string.
      // Notice Pi and Sigma characters are still present.
      String decodedString = unicode.GetString(encodedBytes, 
                                               0, encodedBytes.Length);
      outputBlock.Text += "\n";
      outputBlock.Text += "Decoded bytes:" + "\n";
      outputBlock.Text += decodedString + "\n";
   }
}


Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

이 형식의 모든 공용 static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 모든 인스턴스 멤버는 스레드로부터 안전하지 않을 수 있습니다.

이 정보가 도움이 되었습니까?
(1500자 남음)
의견을 주셔서 감사합니다.
표시:
© 2014 Microsoft. All rights reserved.