« MLang(Multilingual Language)の続き(2)・・・IEnumCodePage,IEnumRfc1766 | トップページ | GetStringTypeEx »

2008年10月12日 (日)

MLang(Multilingual Language)の続き(3)・・・IMLangCodePages

今回はIMLangCodePagesインターフェース。

IMLangCodePagesは与えられたUnicode文字または文字列を含むコードページ集合(a set of code pages)を求めるメソッドを提供する。また、個々のコードページ識別子とコードページ集合間の変換を行うメソッドも提供する。コードページ集合は、32ビット符号無し整数(DWORD)として表現され、32ビット符号無し整数の各ビットが特定のコードページに対応する(コードページ集合にコードページが含まれていれば、そのビットが1にセットされる)。各ビットがどのコードページに対応するかはドキュメント化されていないが、IMLangCodePagesインタフェースのCodePagesToCodePageCodePageToCodePagesメソッドを使って、コードページ集合に含まれている各コードページを次のように求めることができる。

Unicode文字または文字列からそれらコードページ集合を求めるにはGetCharCodePagesGetStrCodePagesメソッドを使う。

ということで実際にこれらのメソッドを使ってコードポイントがU+0000からU+FFFFまでの範囲の各Unicode文字のコードページ集合を次のコードのような感じで求めてみる(サロゲートペアや結合文字は通常単独では使われない等細かい事は考えないbearing)。

実行結果は次の通り。

Mlang3_1

上の画像より、U+3042の「あ」(KATAKANA LETTER A)のコードページ集合に、シフトJISを表すコードページ932に含まれていることがわかる。また、簡体字中国語のGB2312を表すコードページ936も含まれているが、ネットで検索するとどうやらGB2312に日本語の平仮名や片仮名などの文字が含まれているらしい・・

次に、U+FF71の「ア」(HALF WIDTH KATAKANA LETTER A)のコードページ集合を見てみる。

Mlang3_2

半角はさすがにGB2312などに含まれていないか・・・

最後に、U+0041の「A」(LATIN CAPITAL LETTER A)。

Mlang3_3

案の定、U+0000からU+007Fの範囲はASCIIと互換であるので、ほとんどの各国語キャラクタセットに含まれているってことかな??

以上。

« MLang(Multilingual Language)の続き(2)・・・IEnumCodePage,IEnumRfc1766 | トップページ | GetStringTypeEx »

Windows」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1497665/39651739

この記事へのトラックバック一覧です: MLang(Multilingual Language)の続き(3)・・・IMLangCodePages:

« MLang(Multilingual Language)の続き(2)・・・IEnumCodePage,IEnumRfc1766 | トップページ | GetStringTypeEx »

自作ソフトウェア

無料ブログはココログ

メモ