基本型のエンコーディング
更新 : 2007 年 11 月
文字は、多数の異なる文字スキームまたはコード ページを使用して表現できる抽象エンティティです。たとえば、Unicode UTF-16 エンコーディングでは文字が 16 ビット整数のシーケンスとして表されますが、Unicode UTF-8 では同じ文字が 8 ビット バイトのシーケンスとして表されます。共通言語ランタイムは、Unicode UTF-16 (Unicode Transformation Format、16 ビット エンコーディング形式) を使用して文字を表します。
共通言語ランタイムをターゲットとするアプリケーションは、エンコーディングによって文字表現をネイティブの文字スキームから別のスキームに変換します。これらのアプリケーションは、デコーディングによって非ネイティブ スキームの文字をネイティブ スキームに割り当てます。文字をエンコードおよびデコードするために最も一般的に使用される System.Text 名前空間のクラスを次の表に示します。
文字スキーム |
クラス |
説明 |
---|---|---|
ASCII エンコーディング |
ASCII 文字の変換を行います。 |
|
各種エンコーディング |
Convert メソッドに指定されたさまざまなエンコーディングの文字変換を行います。 |
|
UTF-16 Unicode エンコーディング |
UTF-16 エンコーディングの変換を行います。このスキームでは、文字が 16 ビット整数で表されます。 |
|
UTF-8 Unicode エンコーディング |
UTF-8 エンコーディングの変換を行います。この可変幅エンコーディング スキームでは、文字が 1 ~ 4 バイトで表されます。 |
ASCIIEncoding.GetBytes メソッドを使用して、Unicode 文字列をバイト配列に変換するコード例を次に示します。配列内の各バイトは、文字列のその位置にある文字に対応する ASCII 値を表します。
Dim MyString As String = "Encoding String."
Dim AE As New ASCIIEncoding()
Dim ByteArray As Byte() = AE.GetBytes(MyString)
Dim x as Integer
For x = 0 To ByteArray.Length - 1
Console.Write("{0} ", ByteArray(x))
Next
string MyString = "Encoding String.";
ASCIIEncoding AE = new ASCIIEncoding();
byte[] ByteArray = AE.GetBytes(MyString);
for(int x = 0;x <= ByteArray.Length - 1; x++)
{
Console.Write("{0} ", ByteArray[x]);
}
この例では、次の値がコンソールに表示されます。バイト 69 は文字 E の ASCII 値です。バイト 110 は文字 n の ASCII 値であり、以下同様に続いています。
69 110 99 111 100 105 110 103 32 83 116 114 105 110 103 46
ASCIIEncoding クラスを使用して、上のバイト配列を文字配列に変換するコード例を次に示します。GetChars メソッドを使用して、バイト配列をデコードします。
Dim AE As New ASCIIEncoding()
Dim ByteArray As Byte() = { 69, 110, 99, 111, 100, 105, 110, 103, 32, 83, 116, 114, 105, 110, 103, 46 }
Dim CharArray As Char() = AE.GetChars(ByteArray)
Dim x As Integer
For x = 0 To CharArray.Length - 1
Console.Write(CharArray(x))
Next
ASCIIEncoding AE = new ASCIIEncoding();
byte[] ByteArray = { 69, 110, 99, 111, 100, 105, 110, 103, 32, 83, 116, 114, 105, 110, 103, 46 };
char[] CharArray = AE.GetChars(ByteArray);
for(int x = 0;x <= CharArray.Length - 1; x++)
{
Console.Write(CharArray[x]);
}
上のコードでは、コンソールに Encoding String. と表示されます。