EUCからSJISに文字コード変換するには

[上に] [前に] [次に]
ぐぴぞう 2000/01/05(水) 14:56:06
CでCGIを作成していますが、そのCGIで
EUCの文字をSJISの文字へと変換していますが、
うまくいかない場合があります。(SJISはそのまま)
また、SJISの文字を入力したにもかかわず、変換後は文字化けの
状態になってしまう場合がありました。(例としては「晴」)
どうも、EUCの文字コードの判定がおかしいと考えられるんですが
わたしでは、ちょっとわかりません。
どうか、それぞれの文字コードを判定する場合の文字コードの
範囲指定等を教えて下さい。
宜しくお願いします。

ラウォッチ 2000/01/05(水) 16:41:43
まず、EUCからJISに変換して、
JISからSJISに変換します。

c1を第一バイト、c2を第二バイトとします。

・EUC→JIS
    c1 = c1 - 0x80;
    c2 = c2 - 0x80;

・JIS→シフトJIS
    if (c1 & 0x01) {
        c1 = ((c1 + 1) / 2) + 0x70;
        c2 = c2 + 0x1F;
    } else {
        c1 = (c1 / 2) + 0x70;
        c2 = c2 + 0x7D;
    }
    if (c1 >= 0xA0) { c1 = c1 + 0x40; }
    if (c2 >= 0x7F) { c2 = c2 + 0x01; }

以下が参考になります。
http://www.tohoho-web.com/wwwkanji.htm
ただし、「晴」等はテストしていません。

Kan-chan [E-Mail] [HomePage] 2000/01/07(金) 00:58:37
jcode.pl互換のC++ライブラリがここにありますよ。
ソースはC++なので、もしC言語にこだわるなら、一部C++の文字列処理命令がある部分をCに置き換えないといけないかもしれませんが……。

http://shimarin.stbbs.net/columns/cxxcgi.html

[上に] [前に] [次に]