Share via


ASCIIEncoding クラス

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

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

System.Object
   System.Text.Encoding
      System.Text.ASCIIEncoding

<Serializable>
Public Class ASCIIEncoding   Inherits Encoding
[C#]
[Serializable]
public class ASCIIEncoding : Encoding
[C++]
[Serializable]
public __gc class ASCIIEncoding : public Encoding
[JScript]
public
   Serializable
class ASCIIEncoding extends Encoding

スレッドセーフ

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

解説

ASCIIEncoding は、Unicode 文字を 1 個の 7 ビット ASCII 文字としてエンコードします。このエンコーディングは、U+0000 から U+007F までの文字値だけをサポートします。この制約によって、国際化されたアプリケーションに ASCII が適さないことがよくあります。代わりに、 UTF8Encoding または UnicodeEncoding を使用することを検討してください。

ASCIIEncoding に対応する Windows コード ページは 20127 です。

このクラスは Encoding クラスから継承します。

使用例

[Visual Basic, C#, C++] Unicode 文字を ASCII 文字としてエンコードする方法を次の例に示します。 ASCIIEncoding を使用して Unicode 文字を ASCII 範囲外にエンコードすると、データが損失します。

 
Imports System
Imports System.Text
Imports Microsoft.VisualBasic.Strings

Class ASCIIEncodingExample
    Public Shared Sub Main()
        ' The encoding.
        Dim ascii As New ASCIIEncoding()

        ' A Unicode string with two characters outside the ASCII code range.
        Dim unicodeString As String = _
            "This Unicode string contains two characters " & _
            "with codes outside the ASCII code range, " & _
            "Pi (" & ChrW(928) & ") and Sigma (" & ChrW(931) & ")."
        Console.WriteLine("Original string:")
        Console.WriteLine(unicodeString)

        ' Save positions of the special characters for later reference.
        Dim indexOfPi As Integer = unicodeString.IndexOf(ChrW(928))
        Dim indexOfSigma As Integer = unicodeString.IndexOf(ChrW(931))

        ' Encode string.
        Dim encodedBytes As Byte() = ascii.GetBytes(unicodeString)
        Console.WriteLine()
        Console.WriteLine("Encoded bytes:")
        Dim b As Byte
        For Each b In encodedBytes
            Console.Write("[{0}]", b)
        Next b
        Console.WriteLine()

        ' Notice that the special characters have been replaced with
        ' the value 63, which is the ASCII character code for '?'.
        Console.WriteLine()
        Console.WriteLine( _
            "Value at position of Pi character: {0}", _
            encodedBytes(indexOfPi) _
        )
        Console.WriteLine( _
            "Value at position of Sigma character: {0}", _
            encodedBytes(indexOfSigma) _
        )

        ' Decode bytes back to string.
        ' Notice missing Pi and Sigma characters.
        Dim decodedString As String = ascii.GetString(encodedBytes)
        Console.WriteLine()
        Console.WriteLine("Decoded bytes:")
        Console.WriteLine(decodedString)
    End Sub 'Main
End Class 'ASCIIEncodingExample

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

class ASCIIEncodingExample {
    public static void Main() {
        // The encoding.
        ASCIIEncoding ascii = new ASCIIEncoding();
        
        // A Unicode string with two characters outside the ASCII code range.
        String unicodeString =
            "This Unicode string contains two characters " +
            "with codes outside the ASCII code range, " +
            "Pi (\u03a0) and Sigma (\u03a3).";
        Console.WriteLine("Original string:");
        Console.WriteLine(unicodeString);

        // Save positions of the special characters for later reference.
        int indexOfPi = unicodeString.IndexOf('\u03a0');
        int indexOfSigma = unicodeString.IndexOf('\u03a3');

        // Encode string.
        Byte[] encodedBytes = ascii.GetBytes(unicodeString);
        Console.WriteLine();
        Console.WriteLine("Encoded bytes:");
        foreach (Byte b in encodedBytes) {
            Console.Write("[{0}]", b);
        }
        Console.WriteLine();
        
        // Notice that the special characters have been replaced with
        // the value 63, which is the ASCII character code for '?'.
        Console.WriteLine();
        Console.WriteLine(
            "Value at position of Pi character: {0}",
            encodedBytes[indexOfPi]
        );
        Console.WriteLine(
            "Value at position of Sigma character: {0}",
            encodedBytes[indexOfSigma]
        );

        // Decode bytes back to string.
        // Notice missing Pi and Sigma characters.
        String decodedString = ascii.GetString(encodedBytes);
        Console.WriteLine();
        Console.WriteLine("Decoded bytes:");
        Console.WriteLine(decodedString);
    }
}

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

int main()
{
   // The encoding.
   ASCIIEncoding* ascii = new ASCIIEncoding();

   // A Unicode string with two characters outside the ASCII code range.
   String * unicodeString =
      S"This Unicode String* contains two characters with codes outside the ASCII code range, Pi (\u03a0) and Sigma (\u03a3).";

   Console::WriteLine(S"Original String*:");
   Console::WriteLine(unicodeString);

   // Save positions of the special characters for later reference.
   int indexOfPi = unicodeString -> IndexOf(L'\u03a0');
   int indexOfSigma = unicodeString -> IndexOf(L'\u03a3');

   // Encode string.
   Byte encodedBytes[] = ascii -> GetBytes(unicodeString);
   Console::WriteLine();
   Console::WriteLine(S"Encoded bytes:");

   IEnumerator* myEnum = encodedBytes->GetEnumerator();
   while (myEnum->MoveNext()) 
   {
      Byte b = *__try_cast<Byte __gc*>(myEnum->Current);
      Console::Write(S"->Item[ {0}]", __box(b));
   }

   Console::WriteLine();

   // Notice that the special characters have been replaced with
   // the value 63, which is the ASCII character code for '?'.
   Console::WriteLine();
   Console::WriteLine(S"Value at position of Pi character: {0}",
      encodedBytes->Item[indexOfPi]);

   Console::WriteLine(S"Value at position of Sigma character: {0}",
      encodedBytes->Item[indexOfSigma]);

   // Decode bytes back to string.
   // Notice missing Pi and Sigma characters.
   String * decodedString = ascii -> GetString(encodedBytes);
   Console::WriteLine();
   Console::WriteLine(S"Decoded bytes:");
   Console::WriteLine(decodedString);
}

[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 内)

参照

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