漢字コードがあわない。何で動く?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
えいえい2

漢字コードがあわない。何で動く?

#1

投稿記事 by えいえい2 » 9年前

いつもお世話になります。
以下コードを記入すると標記の通り漢字コードがあわないのと、何で動くかが解決できないです。

#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点
何で動く?の部分と
なんでコードが一致しない?

御教授よろしくお願いします。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 漢字コードがあわない。何で動く?

#2

投稿記事 by みけCAT » 9年前

ソースコードを提示する際は、BBCodeを有効にした(無効にしない)状態でBBCodeのcodeタグで囲んでいただけると、見やすくてありがたいです。
えいえい2 さんが書きました:なんでコードが一致しない?
別の文字コードだからでしょう。
UTF-8だと「亜」はE4BA9Cなので、一致しています。
(参考:あの文字のバイト列は何になるんだっけ 各文字コードの16進数表記を求める(PHP/JavaScript/Perl/Ruby/Python) - INASOFT 管理人のふたこと)
えいえい2 さんが書きました:何で動く?
難しい質問ですね。
処理系が正しく作られているから…でしょうか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

えいえい
記事: 13
登録日時: 9年前

Re: 漢字コードがあわない。何で動く?

#3

投稿記事 by えいえい » 9年前

ありがとうございます。
UTF-8 というものがあったなんて知らなかったです。
あと最後に「0a 」となってますが、改行の意味または文字の終わりを指しているのでしょうか?

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 漢字コードがあわない。何で動く?

#4

投稿記事 by みけCAT » 9年前

えいえい さんが書きました:あと最後に「0a 」となってますが、改行の意味または文字の終わりを指しているのでしょうか?
0x0A = LF (ASCII) = line feed(改行)ですね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る