Encoding.UTF8 Encoding.UTF8 Encoding.UTF8 Encoding.UTF8 Property

정의

UTF-8 형식에 대한 인코딩을 가져옵니다.Gets an encoding for the UTF-8 format.

public:
 static property System::Text::Encoding ^ UTF8 { System::Text::Encoding ^ get(); };
public static System.Text.Encoding UTF8 { get; }
member this.UTF8 : System.Text.Encoding
Public Shared ReadOnly Property UTF8 As Encoding

속성 값

UTF-8 형식에 대한 인코딩입니다.An encoding for the UTF-8 format.

예제

다음 예제에서는 다음 문자로 구성 된 배열을 정의 합니다.The following example defines an array that consists of the following characters:

  • 라틴어 소문자 Z (U + 007A)LATIN SMALL LETTER Z (U+007A)

  • 라틴어 작은 문자는 (단어로)LATIN SMALL LETTER A (U+0061)

  • 결합 에스프레소 (U + 0306)COMBINING BREVE (U+0306)

  • 예 (U + 01FD)를 사용 하 여 영문 소문자 AELATIN SMALL LETTER AE WITH ACUTE (U+01FD)

  • 그리스어 소문자 베타 (U + 03B2)GREEK SMALL LETTER BETA (U+03B2)

  • 서로게이트 쌍 (u+d800부터 U + DD54) 그리스어 ACROPHONIC ATTIC 하나 천 STATERS (U + 10154)를 구성 합니다.A surrogate pair (U+D800 U+DD54) that forms GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS (U+10154).

각 문자의 utf-16 코드 단위를 표시 하 고 문자 배열을 인코딩하는 데는 utf-8 인코더에 필요한 바이트 수를 결정 합니다.It displays the UTF-16 code units of each character and determines the number of bytes required by a UTF-8 encoder to encode the character array. 다음 문자를 인코딩하고 결과 u t F-8로 인코딩된 바이트 수를 표시 합니다.It then encodes the characters and displays the resulting UTF-8-encoded bytes.

using System;
using System.Text;

public class Example
{
   public static void Main()  
   {
      // Create a character array.
      string gkNumber = Char.ConvertFromUtf32(0x10154);
      char[] chars = new char[] { 'z', 'a', '\u0306', '\u01FD', '\u03B2', 
                                  gkNumber[0], gkNumber[1] };

      // Get UTF-8 and UTF-16 encoders.
      Encoding utf8 = Encoding.UTF8;
      Encoding utf16 = Encoding.Unicode;
      
      // Display the original characters' code units.
      Console.WriteLine("Original UTF-16 code units:");
      byte[] utf16Bytes = utf16.GetBytes(chars);
      foreach (var utf16Byte in utf16Bytes)
         Console.Write("{0:X2} ", utf16Byte);
      Console.WriteLine();
         
      // Display the number of bytes required to encode the array.
      int reqBytes  = utf8.GetByteCount(chars);
      Console.WriteLine("\nExact number of bytes required: {0}", 
                    reqBytes);

      // Display the maximum byte count.
      int maxBytes = utf8.GetMaxByteCount(chars.Length);
      Console.WriteLine("Maximum number of bytes required: {0}\n", 
                        maxBytes);

      // Encode the array of chars.
      byte[] utf8Bytes = utf8.GetBytes(chars);

      // Display all the UTF-8-encoded bytes.
      Console.WriteLine("UTF-8-encoded code units:");
      foreach (var utf8Byte in utf8Bytes)
         Console.Write("{0:X2} ", utf8Byte);
      Console.WriteLine();
   }
}
// The example displays the following output:
//       Original UTF-16 code units:
//       7A 00 61 00 06 03 FD 01 B2 03 00 D8 54 DD
//       
//       Exact number of bytes required: 12
//       Maximum number of bytes required: 24
//       
//       UTF-8-encoded code units:
//       7A 61 CC 86 C7 BD CE B2 F0 90 85 94
Imports System.Text

Public Module Example
   Public Sub Main()
      ' Create a character array.
      Dim gkNumber As String = Char.ConvertFromUtf32(&h10154)
      Dim chars() As Char = {"z"c, "a"c, ChrW(&H0306), ChrW(&H01FD), 
                             ChrW(&H03B2), gkNumber(0), gkNumber(1) }
 
      ' Get UTF-8 and UTF-16 encoders.
      Dim utf8 As Encoding = Encoding.UTF8
      Dim utf16 As Encoding = Encoding.Unicode

      ' Display the original characters' code units.
      Console.WriteLine("Original UTF-16 code units:")
      Dim utf16Bytes() As Byte = utf16.GetBytes(chars)
      For Each utf16Byte In utf16Bytes
         Console.Write("{0:X2} ", utf16Byte)
      Next
      Console.WriteLine()

      Console.WriteLine()
      ' Display the number of bytes required to encode the array.
      Dim reqBytes As Integer = utf8.GetByteCount(chars)
      Console.WriteLine("Exact number of bytes required: {0}", 
                        reqBytes)

      ' Display the maximum byte count.
      Dim maxBytes As Integer = utf8.GetMaxByteCount(chars.Length)
      Console.WriteLine("Maximum number of bytes required: {0}", 
                        maxBytes)
      Console.WriteLine()
      
      ' Encode the array of characters.
      Dim utf8Bytes() As Byte = utf8.GetBytes(chars)

      ' Display all the UTF-8-encoded bytes.
      Console.WriteLine("UTF-8-encoded code units:")
      For Each utf8Byte In utf8Bytes
         Console.Write("{0:X2} ", utf8Byte)
      Next
      Console.WriteLine()
   End Sub 
End Module 
' The example displays the following output:
'    Original UTF-16 code units:
'    7A 00 61 00 06 03 FD 01 B2 03 00 D8 54 DD
'    
'    Exact number of bytes required: 12
'    Maximum number of bytes required: 24
'    
'    UTF-8-encoded code units:
'    7A 61 CC 86 C7 BD CE B2 F0 90 85 94

설명

이 속성은 반환을 UTF8Encoding 문자당 1 ~ 4 바이트 시퀀스를 유니코드 (u t F-16으로 인코딩된) 문자를 인코딩하는 유니코드 (u t F-16으로 인코딩된) 문자는 u t F-8로 인코딩된 바이트 배열 디코드 하는 개체입니다.This property returns a UTF8Encoding object that encodes Unicode (UTF-16-encoded) characters into a sequence of one to four bytes per character, and that decodes a UTF-8-encoded byte array to Unicode (UTF-16-encoded) characters. .NET 및 인코딩을 사용 하는 유니코드에 대 한 설명은에서 지 원하는 문자 인코딩에 대 한 내용은 .NET의 문자 인코딩합니다.For information about the character encodings supported by .NET and a discussion of which Unicode encoding to use, see Character Encoding in .NET.

UTF8Encoding 이 속성에 의해 반환 되는 개체는 앱에 대 한 적절 한 동작 있을 수 없습니다.The UTF8Encoding object that is returned by this property might not have the appropriate behavior for your app.

  • 반환 된 UTF8Encoding 유니코드 바이트 순서 표시 (BOM)를 제공 하는 개체입니다.It returns a UTF8Encoding object that provides a Unicode byte order mark (BOM). BOM을 제공 하지 않는 한 UTF8 인코딩을 인스턴스화 호출의 오버 로드는 UTF8Encoding 생성자입니다.To instantiate a UTF8 encoding that doesn't provide a BOM, call any overload of the UTF8Encoding constructor.

  • 반환 된 UTF8Encoding 물음표를 사용 하 여 각 인코딩할 수 없는 문자열과 디코딩할 수 없는 각 바이트를 바꾸려면 교체 대체 (fallback)를 사용 하는 개체 ("?") 문자입니다.It returns a UTF8Encoding object that uses replacement fallback to replace each string that it can't encode and each byte that it can't decode with a question mark ("?") character. 대신, 호출할 수 있습니다는 UTF8Encoding.UTF8Encoding(Boolean, Boolean) 인스턴스화하는 생성자를 UTF8Encoding 인 대체 (fallback)는 개체를 EncoderFallbackException 또는 DecoderFallbackException다음 예제와 같이, 합니다.Instead, you can call the UTF8Encoding.UTF8Encoding(Boolean, Boolean) constructor to instantiate a UTF8Encoding object whose fallback is either an EncoderFallbackException or a DecoderFallbackException, as the following example illustrates.

    using System;
    using System.Text;
    
    public class Example
    {
       public static void Main()
       {
          Encoding enc = new UTF8Encoding(true, true);
          string value = "\u00C4 \uD802\u0033 \u00AE"; 
    
          try {
             byte[] bytes= enc.GetBytes(value);
             foreach (var byt in bytes)
                Console.Write("{0:X2} ", byt);
             Console.WriteLine();
    
             string value2 = enc.GetString(bytes);
             Console.WriteLine(value2);
          }
          catch (EncoderFallbackException e) {
             Console.WriteLine("Unable to encode {0} at index {1}", 
                               e.IsUnknownSurrogate() ? 
                                  String.Format("U+{0:X4} U+{1:X4}", 
                                                Convert.ToUInt16(e.CharUnknownHigh),
                                                Convert.ToUInt16(e.CharUnknownLow)) :
                                  String.Format("U+{0:X4}", 
                                                Convert.ToUInt16(e.CharUnknown)),
                               e.Index);
          }                     
       }
    }
    // The example displays the following output:
    //        Unable to encode U+D802 at index 2
    
    Imports System.Text
    
    Module Example
       Public Sub Main()
          Dim enc As Encoding = New UTF8Encoding(True, True)
          Dim value As String = String.Format("{0} {1}{2} {3}", 
                                ChrW(&h00C4), ChrW(&hD802), ChrW(&h0033), ChrW(&h00AE))
          
          Try
             Dim bytes() As Byte = enc.GetBytes(value)
             For Each byt As Byte In bytes
                Console.Write("{0:X2} ", byt)
             Next       
             Console.WriteLine()
             Dim value2 As String = enc.GetString(bytes)
             Console.WriteLine(value2)
          Catch e As EncoderFallbackException
             Console.WriteLine("Unable to encode {0} at index {1}", 
                               If(e.IsUnknownSurrogate(), 
                                  String.Format("U+{0:X4} U+{1:X4}", 
                                                Convert.ToUInt16(e.CharUnknownHigh),
                                                Convert.ToUInt16(e.CharUnknownLow)),
                                  String.Format("U+{0:X4}", 
                                                Convert.ToUInt16(e.CharUnknown))),
                               e.Index)
          End Try
       End Sub
    End Module
    ' The example displays the following output:
    '       Unable to encode U+D802 at index 2
    

적용 대상

추가 정보