str ⇔ Shift_JIS

str(C#の内部コード)を Shift_JIS に変換します。
Shift_JIS を str(C#の内部コード)に変換します。

前田稔の超初心者のプログラム入門

str → Shift_JIS

  1. 以前の Windows System では Shift_JIS が使われていましたが、最近では Unicode が使われるようになってきました。
    C# ではプログラムの内部コードとして Unicode(utf-16) が使われています。
    C# の string(utf-16)を Shift_JIS に変換するプログラムを作成します。
  2. string(utf-16)は1文字が2バイトで記録されているのに対して Shift_JIS では英数字を1バイトで, 日本語を2バイトで記録します。
    従って Shift_JIS の文字列を記録するときは byte[] 配列を使います。
  3. string str = "シフトJISへ変換" を byte[] bytes に変換する str2byte.cs です。
    using System;
    using System.Text;
    
    class StringToBytes {
      public static void Main() {
    
        string str = "シフトJISへ変換";
    
        Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS");
        byte[] bytes = sjisEnc.GetBytes(str);
    
        Console.WriteLine(BitConverter.ToString(bytes));
        // 出力:83-56-83-74-83-67-4A-49-53-82-D6-95-CF-8A-B7
      }
    }
    
  4. Shift_JIS の文字コードは Console.WriteLine(BitConverter.ToString(bytes)); で印字します。
    BitConverter.ToString(bytes) を使うと「// 出力」行で示したように16進数で印字してくれます。

Shift_JIS → str

  1. string → Shift_JIS とは逆に Shift_JIS → string の変換です。
    byte[] 配列に16進数で Shift_JIS の文字列を定義します。
    これを string str に変換して印字します。
  2. byte[] bytes を string str に変換する 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へ変換
      }
    }
    

utf-8 → str

  1. uft-8 → string の変換です。
    byte[] 配列に16進数で utf-8 の文字列を定義します。
    これを string str に変換して印字します。
  2. byte[] bytes を string str に変換する utf82str.cs です。
    using System;
    using System.Text;
    
    class BytesToString {
      public static void Main() {
    
        byte[] bytes = new byte[] {
          0xE3, 0x82, 0xB7, 0xE3, 0x83, 0x95, 0xE3, 0x83,
          0x88, 0x4A, 0x49, 0x53, 0xE3, 0x81, 0xB8, 0xE5,
          0xA4, 0x89, 0xE6, 0x8F, 0x9B };
    
        Encoding utf8Enc = Encoding.GetEncoding("utf-8");
        string str = utf8Enc.GetString(bytes);
    
        Console.WriteLine(str);
      }
    }
    
  3. このページの作成に当たっては 文字列をシフトJISとしてバイト列に変換するには? を参考にさせていただきました。

超初心者のプログラム入門(C# Frame Work)