漢字コードがあわない。何で動く?
Posted: 2016年7月18日(月) 16:16
いつもお世話になります。
以下コードを記入すると標記の通り漢字コードがあわないのと、何で動くかが解決できないです。
#include <stdio.h>
//キー入力を行う
//漢字の場合は2バイトにして返す
//上位バイトが0ならASCIIコード
//半角2バイト文字には非対応
int getevent()
{
int c,c2;
if ((c = getchar()) > 0x7f)
{
printf( "漢字だよ\n");
c2 = getchar();
printf( "c=%x\n",c);
printf( "c2=%x\n",c2);
return (c << 8) | c2;
}
else
{
printf( "Asciiだよ\n");
return c;
}
}
int main()
{
int e ;
//イベントの検出と配送
while ((e = getevent()) != EOF)
printf( "e=%x\n",e);
}
実行結果⇓
$./a.out
亜
漢字だよ
c=e4
c2=ba
e=e4ba<−−−−−ここまでは納得<−−−−−でもコードがあわない
漢字だよ<−−−−−何で動く?
c=9c<−−−−−何で動く?<−−−−−この数値は何
c2=a<−−−−−何で動く?この数値は何(改行)
e=9c0a<−−−−−何で動く?
EUC コード表を確認すると
http://charset.7jp.net/euc.html
亜→b0a1
全然一致しないです。asciiも一致しない
ただし1バイトのEUCはあっている
疑問点をまとめると2点
何で動く?の部分と
なんでコードが一致しない?
御教授よろしくお願いします。
以下コードを記入すると標記の通り漢字コードがあわないのと、何で動くかが解決できないです。
#include <stdio.h>
//キー入力を行う
//漢字の場合は2バイトにして返す
//上位バイトが0ならASCIIコード
//半角2バイト文字には非対応
int getevent()
{
int c,c2;
if ((c = getchar()) > 0x7f)
{
printf( "漢字だよ\n");
c2 = getchar();
printf( "c=%x\n",c);
printf( "c2=%x\n",c2);
return (c << 8) | c2;
}
else
{
printf( "Asciiだよ\n");
return c;
}
}
int main()
{
int e ;
//イベントの検出と配送
while ((e = getevent()) != EOF)
printf( "e=%x\n",e);
}
実行結果⇓
$./a.out
亜
漢字だよ
c=e4
c2=ba
e=e4ba<−−−−−ここまでは納得<−−−−−でもコードがあわない
漢字だよ<−−−−−何で動く?
c=9c<−−−−−何で動く?<−−−−−この数値は何
c2=a<−−−−−何で動く?この数値は何(改行)
e=9c0a<−−−−−何で動く?
EUC コード表を確認すると
http://charset.7jp.net/euc.html
亜→b0a1
全然一致しないです。asciiも一致しない
ただし1バイトのEUCはあっている
疑問点をまとめると2点
何で動く?の部分と
なんでコードが一致しない?
御教授よろしくお願いします。