EUCコードをシフトJISコードに変換する


関数名
euc2sjis  EUCコードをシフトJISコードに変換する
形式
unsigned int euc2sjis(unsigned int euc);
引数
euc  EUCコード
関数値
シフトJISコード
注意事項
半角カナ対応のEUCコードを全角カナSJISコードに変換している。 そのために、関数 hankaku2zen() (半角カナを全角カナに変換する)が別途必要である。

用例(euc2sjis-test.c
euc2sjis(0xb4c1);

プログラム(euc2sjis.c
unsigned int euc2sjis(unsigned int euc)
{
    unsigned int jis;
    unsigned int hib, lob;

    if ((euc & 0xff00) == 0x8e00)
        jis = hankaku2zen(euc & 0xff);
    else jis = euc & ~0x8080;
    
    hib = (jis >> 8) & 0xff;
    lob = jis & 0xff;
    lob += (hib & 1) ? 0x1f : 0x7d;
    if (lob >= 0x7f) lob++;
    hib = ((hib - 0x21) >> 1) + 0x81;
    if (hib > 0x9f) hib += 0x40;

    return (hib << 8) | lob;
}
説明
EUCコードはUNIX上で広く使われている8ビット系漢字コード であり、JISコードの第1バイト、第2バイトの両方に0x80を加算した ものを使用する。さらに、ANKの半角カナ文字については、前に1バイト (0x8e) をつけ、2バイトで半角カナ文字を表す。

一方、シフトJISコードは Microsoft漢字コードともよばれ、現在の ところ最も広く使用されている8ビット系漢字コードであり、パソコン 上の標準漢字コードでもある。

関連関数
JISコードをSJISに変換するJISコードをEUCに変換するSJISコードをJISに変換するSJISコードをEUCに変換するEUCコードをJISに変換する