プロが教えるわが家の防犯対策術!

文字コードにすごいうとい者なのですが、見慣れない
_tmain
なんていうものを見てしまって、少し調べてみました。

そうすると、なんだか2バイトでは世界中の文字はもとより、感じすらすべて表すことは不可能で、今のunicode主流は3バイトで表現するのだとか。

で、私の知識の中では、C言語ではwchar_tでunicodeを表現しているらしいのですが、それじゃあ足りないわけで、ちゃんとした3バイト文字を表現するための公式的?な記述方法は(WIN32 APIで)あるのでしょうか。(その他MFCなどでもあれば。)


本人こういう事柄について、今まで考えたこともなく、よくわからないまま質問しているので、どうぞ怒らないでください。
よろしくおねがいします。

A 回答 (2件)

> wchar_tは16bitで固定なので、同じ文字コードについて、十分なサイズをもっている場合とそうでない場合なんてあるのでしょうか?



wchar_t型は8ビット以上で、符号の有無も処理系定義です。また、サイズ的に問題がなくても、どんな文字コードが使われるかも処理系定義です。

> あと、現段階で、2バイト(wchar_t)のみで世界中のすべての文字を表すことは可能なのでしょうか?

サロゲートを使うしかないと思います。
    • good
    • 0
この回答へのお礼

そうだったんですか、wchar_tは8bit以上という定義だったとは・・知りませんでした。(wだからてっきり・・)

半角を1バイト、全角を2バイトで使うというのを、今度はwchar_tとその倍サイズで表現するというものがサロゲートだったんですね。
名前はじめて知りました。

参考になりました。ありがとうございます。

お礼日時:2006/05/01 22:40

> 今のunicode主流は3バイトで表現するのだとか。



主流という意味では16ビットだと思いますが...

> C言語ではwchar_tでunicodeを表現しているらしいのですが

wchar_t型は、Unicodeを表現するためのものとは限りません。ワイド文字がどんな文字コードを使うかは処理系定義です。
ところで、Win32 APIはOSの取り決めですので、C処理系の取り決めは原則として別のものです。Windows上の処理系でも、wchar_t型でシフトJISを扱うものも実在しますので。

> ちゃんとした3バイト文字を表現するための公式的?な記述方法は(WIN32 APIで)あるのでしょうか。

C言語の場合、wchar_t型でISO 10646のすべての文字を表現できるサイズを持っているのであれば、__STDC_ISO_10646__マクロがあらかじめ定義されます(ただし、C99以降)。ここでも、Win32 APIかどうかは関係ありません。
    • good
    • 0
この回答へのお礼

>C言語の場合、wchar_t型でISO 10646のすべての文字を表現できるサイズを持っているのであれば、__STDC_ISO_10646__マクロがあらかじめ定義されます

wchar_tは16bitで固定なので、同じ文字コードについて、十分なサイズをもっている場合とそうでない場合なんてあるのでしょうか?

あと、現段階で、2バイト(wchar_t)のみで世界中のすべての文字を表すことは可能なのでしょうか?

今回の私のこの発言内容が、低レベルすぎると思った場合は、是非教えてください。
これ以上迷惑のかからない手段を見つけて勉強しますので。

お礼日時:2006/05/01 20:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!