ENGLISH page is here.
GET DinopSearchBar
サイト内検索:
HOME
VC++ TIPS
ダウンロード
DinopExifReader
DinopSearchBar
DinopSearchBar mini
DinopTabbingBar
for Firefox
大阪湾の生き物
甲子園浜の自然
甲子園浜の干潟
甲子園浜の水中
甲子園浜の野鳥
近畿の山々
植物図鑑
箕面マップ
水中機材
カメラ
ランキング
望遠鏡の世界
顕微鏡の世界
Googleのすべて
GoogleマップAPI
ニュース
読んだ本
日記
変な料理の作り方
遺伝子操作
論文紹介
デイトレード
自動売買でFX
ネットで小遣い稼ぎ
Solaris
電子工作
その他
問い合わせ
VC++用コード集
大阪湾の生き物
水中用機材
since:2000/11/15
dinopcom@gmail.com
www.dinop.comは
だいのっぷ・どっと・こむ
と読んでください。







« ユニコードからMBCS(ANSI)への変換 | メイン | COMを使う(超簡単例:VCで実行) »

ユニコードとMBCS(char、WCHAR)




MBCSとは

 普通、「A」という文字は「半角文字」と呼ばれる。また「A」は1バイトとして扱われている。 同じように「あ」という文字は「全角文字」で2バイトとして扱われる。このように同じ1文字で も1バイトと2バイトの文字が混在しているのが「MBCS(MultiByte Character Set)」だ。
 MBCSでは日本語を扱うことができる...と言うと語弊があるが「ABC」のような英語と日本語や中 国語、韓国語などで使われている文字を混在することができる。ただし混在できるのは基本的に1 つの言語のみとなる。例えばMBCSを使って日本語の平仮名とと韓国語のハングル文字を混在するこ とはできない。



ユニコードとは

 「ユニコード」というのは文字コードセットの1つ。英語と日本語や中国語などで使われている さまざまな文字を同時に扱える。

 MBCSでは「A」という文字は1バイトとして扱われている。しかしユニコードでは「A」という文 字であっても2バイトで扱われる。また「あ」という文字も同じように2バイトとして扱われる。 つまり常に1文字に必要なバイト数は同じになる。
 このようにユニコード文字は1文字が2バイトのため「ワイド文字」と呼ばれることもある。

※ユニコードでも世界で使われている全ての文字を扱えるわけではない
※ユニコードにもいくつかの種類がある。その種類によっては1文字2バイトとは限らない



charとWCHAR

 通常C言語では文字を表現する型として「char」、文字列は「char*」が使われる。
 この「char」で扱う文字は全て「MBCS」となる。つまり「char」ではユニコードを扱うことは できない。

 そのためユニコード文字を扱う型として「wchar_t」や「WCHAR」が用意されている
 また当然のことながらsizeof(char)は1バイトだが、sizeof(WCHAR)は2バイトとなる。

※ユニコードにもいくつかの種類がある。その種類によってはcharでもユニコードを扱える



ユニコードとMBCSの相互変換

 MBCS文字とユニコード文字の変換は単純にはできない。変換にはWideCharToMultiByteのような APIを利用することになる(具体的な変換例は別ページ参照)。

またユニコードとMBCSでは表現できる文字の"幅"が違うため変換できないこともある。例えるなら ばlong型からshort型への変換のようなものだ。long型は9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 までの数値を代入できる。しかしshort型は-32,768 ~ 32,767までだけであり、long型に大きい数 値が入っていた場合にはshortに代入できないためだ。これと同じ関係がMBCSとユニコードの間にも あることは頭の片隅に置いておくといいだろう。








Copyright (c) 1999-2007 issei. All rights reserved. (運営者情報