作者: davi
日時: 2008/12/26(22:29)
Bruce.さん  <  こん??は でび です

On Thu, 25 Dec 2008 21:36:12 +0900
"Bruce." <kbk@...> wrote:

> 入力がマルチバイトのまんまなんだから、wchar_t 使うようにしたって意味ない
> ですよ。


> 	for (count = 0; (c = fgetc(fp)) != EOF; count++) {//←このfgetcは1バイト
> ごとの読み出し
> 		if (iskanji(c)) {
> 			if (iskanji2(c2 = fgetc(fp)))
> 				c = ((c << 8) | c2);//←2バイト文字なら上位下位のペアを組み立てる

この8って何じゃ?、と思っていたら、SJISの2バイト文字が8140〜だから、
読み込んだ1バイト(8ビット)分の、先頭が8以下なら半角(ASCIIだけでなく
半角カナも含む)、という判断にする根拠に使っていたんですね。

む〜ん。
つくづく、コンピュータ上での日本語って、呪われた言語だったんだなぁ…と。

> 			buf[count] = c & ~0x8000;//2バイト文字の最上位ビットを落とす

> つまり、sjisで
> C:\home>echo LCSを使う|hexdump
> 4C 43 53 82 F0 8E 67 82 A4
> 
> というバイト並びのイメージを内部的に
> 
> 004C 0043 0053 02F0 0E67 02A4
> 
> という16ビットごとの並びにして、処理を進めているわけです。

ある意味、独自に内部コード化してる、ということですか?

すると、拭(SJISで9040)、漾(SJISでE040)なんかは、
それぞれ1040、7040となるわけですか?

愚問かもしれませんが、お許し下さい。
ちと脳味噌オーバーフロー気味です。0で除算しそう…。

でび  http://davi.txt-nifty.com/1984/