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
[上に]
[前に]
[次に]