「TIPS:文字列をシフトJISとしてバイト列に変換するには?」では、Encodingクラス(System.Text名前空間)により、Unicode文字列をシフトJIS文字列へと変換し、それをバイト列(byte型データの配列)として取得した。Encodingクラスでは、これとは逆に、バイト列を、指定したエンコーディングでUnicode文字列へ変換することができる。これには、EncodingクラスのGetStringメソッドを使用する。
エンコーディングとしてシフトJISを使用する場合、つまりバイト列のデータをシフトJIS文字の文字コードの並びとして解釈する場合には、シフトJISをサポートするEncodingオブジェクトが必要になる。これは次のようにして取得する。
Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS");
EncodingクラスとGetEncodingメソッドについては、冒頭に挙げた「TIPS:文字列をシフトJISとしてバイト列に変換するには?」で解説している。
次に、変換元となるバイト列をパラメータに指定し、このEncodingオブジェクトに対してGetStringメソッドを呼び出せば、変換後のUnicode文字列を取得することができる。
byte[] bytes = new byte[]
{0x82,0xB1,0x82,0xF1,0x82,0xC9,0x82,0xBF,0x82,0xED};
string str = sjisEnc.GetString(bytes);
次のサンプル・プログラムは、「TIPS:文字列をシフトJISとしてバイト列に変換するには?」でのサンプル・プログラムで変換したバイト列のデータを、文字列に戻している。
// byte2str.cs
using System;
using System.Text;
class BytesToString {
public static void Main() {
byte[] bytes = new byte[] {
0x83, 0x56, 0x83, 0x74, 0x83, 0x67, 0x4A, 0x49,
0x53, 0x82, 0xD6, 0x95, 0xCF, 0x8A, 0xB7};
Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS");
string str = sjisEnc.GetString(bytes);
Console.WriteLine(str);
// 出力:シフトJISへ変換
}
}
// コンパイル方法:csc byte2str.cs
文字のエンコーディングとしてシフトJIS以外を扱う場合には、「TIPS:Encodingクラスで扱えるエンコーディング名は?」を参考にしていただきたい。
カテゴリ:クラス・ライブラリ 処理対象:文字列
使用ライブラリ:Encodingクラス(System.Text名前空間)
関連TIPS:文字列をシフトJISとしてバイト列に変換するには?
関連TIPS:Encodingクラスで扱えるエンコーディング名は?
Copyright© Digital Advantage Corp. All Rights Reserved.