Encoding クラス

文字エンコーディングを表します。

この型のすべてのメンバの一覧については、Encoding メンバ を参照してください。

System.Object
   System.Text.Encoding
      System.Text.ASCIIEncoding
      System.Text.UnicodeEncoding
      System.Text.UTF7Encoding
      System.Text.UTF8Encoding

<Serializable>
MustInherit Public Class Encoding
[C#]
[Serializable]
public abstract class Encoding
[C++]
[Serializable]
public __gc __abstract class Encoding
[JScript]
public
   Serializable
abstract class Encoding

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

メソッドは、Unicode 文字の配列および文字列を対象となるコード ページに対してエンコードされるバイトの配列へ変換したり、その逆の変換をしたりするために提供されます。

Encoding 実装の数は、次に示す System.Text 名前空間で指定されます。

ASCIIEncoding クラスは、Unicode 文字を 1 個の 7 ビット ASCII 文字としてエンコードします。このエンコーディングは、U+0000 から U+007F までの文字値だけをサポートします。

UnicodeEncoding クラスは、各 Unicode 文字を 2 個の連続バイトとしてエンコードします。リトル エンディアン (コード ページ 1200) とビッグ エンディアン (コード ページ 1201) の両方のバイト順をサポートしています。

UTF7Encoding クラスは、UTF-7 エンコーディング (UTF-7 は UCS Transformation Format、7 ビット形式を表す) を使用して Unicode 文字をエンコードします。このエンコーディングは、すべての Unicode 文字値をサポートしています。このエンコーディングをコード ページ 65000 としてアクセスすることもできます。

UTF8Encoding クラスは、UTF-8 エンコーディング (UTF-8 は UCS Transformation Format、8 ビット形式を表す) を使用して Unicode 文字をエンコードします。このエンコーディングは、すべての Unicode 文字値をサポートしています。このエンコーディングをコード ページ 65001 としてアクセスすることもできます。

GetEncoding メソッドは、他のエンコーディングを取得するために、コード ページまたは名前パラメータと共に使用します。

変換するデータが連続したブロック (ストリームから読み取られるデータなど) でだけ有効な場合、アプリケーションは Decoder または Encoder を使用して変換を実行できます。これは、データが大量であるため小さなブロックに分割する必要がある場合にも役立ちます。デコーダとエンコーダは、 GetDecoder メソッドと GetEncoder メソッドを使用して取得されます。アプリケーションはエンコーディングを取得するために、このクラスのプロパティ、 ASCIIDefaultUnicodeUTF7UTF8 などを使用できます。アプリケーションは、 ASCIIEncodingUnicodeEncodingUTF7EncodingUTF8Encoding の各クラスを通じて、 Encoding オブジェクトの新しいインスタンスを初期化できます。

エンコーディングを通じて、 GetBytes メソッドは Unicode 文字の配列をバイトの配列に変換するために使用し、 GetChars メソッドはバイトの配列を Unicode 文字の配列に変換するために使用します。 GetBytes メソッドと GetChars メソッドは、変換の間の状態を維持しません。

コア GetBytes メソッドおよび GetChars メソッドは、呼び出し元にバッファ先を指定するよう要求し、そのバッファが十分な大きさで変換の結果をすべて保持できるようにします。アプリケーションは、次のメソッドのいずれかを使用して、バッファ先として必要なサイズを計算できます。

  1. GetByteCount メソッドと GetCharCount メソッドを使用すると、特定の変換の結果についての正確なサイズを計算し、その後、その変換に対して適切なサイズに設定されたバッファを割り当てることができます。
  2. GetMaxByteCount メソッドと GetMaxCharCount メソッドを使用すると、指定したバイト数または文字数の変換について最大有効サイズを計算し、その後、そのサイズのバッファを複数の変換で再利用できます。

通常、最初のメソッドの方が使用メモリが少なく、2 番目のメソッドの方が高速に実行されます。

使用例

 
Imports System
Imports System.Text
Imports Microsoft.VisualBasic

Namespace Convert_Example
    Class MyConvertExampleClass
        Shared Sub Main()
            Dim unicodeString As String = "This string contains the unicode character Pi(" & ChrW(&H03A0) & ")"

            ' Create two different encodings.
            Dim ascii As Encoding = Encoding.ASCII
            Dim [unicode] As Encoding = Encoding.Unicode

            ' Convert the string into a byte[].
            Dim unicodeBytes As Byte() = [unicode].GetBytes(unicodeString)

            ' Perform the conversion from one encoding to the other.
            Dim asciiBytes As Byte() = Encoding.Convert([unicode], ascii, unicodeBytes)

            ' Convert the new byte[] into a char[] and then into a string.
            ' This is a slightly different approach to converting to illustrate
            ' the use of GetCharCount/GetChars.
            Dim asciiChars(ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)) As Char
            ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0)
            Dim asciiString As New String(asciiChars)

            ' Display the strings created before and after the conversion.
            Console.WriteLine("Original string: {0}", unicodeString)
            Console.WriteLine("Ascii converted string: {0}", asciiString)
        End Sub
    End Class
End Namespace

[C#] 
using System;
using System.Text;

namespace ConvertExample
{
   class ConvertExampleClass
   {
      static void Main()
      {
         string unicodeString = "This string contains the unicode character Pi(\u03a0)";

         // Create two different encodings.
         Encoding ascii = Encoding.ASCII;
         Encoding unicode = Encoding.Unicode;

         // Convert the string into a byte[].
         byte[] unicodeBytes = unicode.GetBytes(unicodeString);

         // Perform the conversion from one encoding to the other.
         byte[] asciiBytes = Encoding.Convert(unicode, ascii, unicodeBytes);
            
         // Convert the new byte[] into a char[] and then into a string.
         // This is a slightly different approach to converting to illustrate
         // the use of GetCharCount/GetChars.
         char[] asciiChars = new char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
         ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
         string asciiString = new string(asciiChars);

         // Display the strings created before and after the conversion.
         Console.WriteLine("Original string: {0}", unicodeString);
         Console.WriteLine("Ascii converted string: {0}", asciiString);
      }
   }
}

[C++] 
#using <mscorlib.dll>
using namespace System;
using namespace System::Text;

int main()
{
   String* unicodeString = S"This string contains the unicode character Pi(\u03a0)";

   // Create two different encodings.
   Encoding * ascii = Encoding::ASCII;
   Encoding * unicode = Encoding::Unicode;

   // Convert the string into a Byte->Item[].
   Byte unicodeBytes[] = unicode -> GetBytes(unicodeString);

   // Perform the conversion from one encoding to the other.
   Byte asciiBytes[] = Encoding::Convert(unicode, ascii, unicodeBytes);

   // Convert the new Byte into[] a char and[] then into a string.
   // This is a slightly different approach to converting to illustrate
   // the use of GetCharCount/GetChars.
   Char asciiChars[] = new Char[ascii -> GetCharCount(asciiBytes, 0, asciiBytes -> Length)];
   ascii -> GetChars(asciiBytes, 0, asciiBytes->Length, asciiChars, 0);
   String* asciiString = new String(asciiChars);

   // Display the strings created before and after the conversion.
   Console::WriteLine(S"Original String*: {0}", unicodeString);
   Console::WriteLine(S"Ascii converted String*: {0}", asciiString);
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Text

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: Mscorlib (Mscorlib.dll 内)

参照

Encoding メンバ | System.Text 名前空間