ユーザが入力した文字のCodepageを調べたい – プログラミング – Home

ユーザが入力した文字のCodepage...
 
通知
すべてクリア

[解決済] ユーザが入力した文字のCodepageを調べたい


山本和弘
 山本和弘
(@山本和弘)
ゲスト
結合: 15年前
投稿: 3
Topic starter  

Windowsアプリに詳しい方教えてください!!

win32paiのMultiByteToWideCharを使ってUNICODEにする方法について調べているのですが
http://msdn.microsoft.com/ja-jp/library/cc448053.aspx

それで今、親WindowにEditとボタンを配置したアプリを作成し、
ボタンをクリックしたらエディットのテキストをUNICODEにしてファイルに書き出すよう
にしました。
自分の環境の日本語WindowsVistaではMultiByteToWideCharの第一パラメータに
932もしくは(定義済みのCP_ACPなど)を指定すればSJis→UNICODEになり、うまくいくこと
を確認しました。

で、ふと遊び心で、EditのフォントをKS Gothic、文字セットを「ハングル」にして韓国
語CP949でハングルを意味する
char hangeul[]={0xc7, 0xd1,0xb1,0xdb, 0x00};を入力。
MultiByteToWideCharの第一パラメータに949を指定していしたところ、うまくいきまし
た。

で、何が問題かといいますと、
システムロケールやスレッド(CP_THREAD_ACP)に設定されているコードページと
ユーザが実際に入力したテキストのコードページ
が異なる場合(稀とは思いますが)に、
ユーザが入力したテキストのコードページを取得する方法がわかりたいのです。

自分なりに考えたところ、Editにセットされているフォントからcharsetを割り出し、
charasetからCodepageを割り出す、という2段階が必要なのではないか?
(今回のように、HANGEUL_CHARSET(129)からCP949を割り出す変換マップが必要?)
ということなのですが、このアプローチで良いでしょうか?


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 15年前
投稿: 64
 

一意に決まりませんよ?

たとえば 'A' は asciiでもUTF-8でもiso-2022-jpでもeucでも同じ文字コードです。


返信引用
山本和弘
 山本和弘
(@山本和弘)
ゲスト
結合: 15年前
投稿: 3
Topic starter  

すいません、ちょっと書き方がまずかったかも知れません。
文字('A' = 0x41)から文字コード(文字セット)を判別したいのではなく、
文字セットからコードページを判別したいと思ったんです。

なぜ、文字セットからなのとかと言うと、
文字セットならフォントから取得できますし、
フォントこそユーザが実際に入力した文字に直結すると考えたからです。

もちろん
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200603/06030016.txt
にあるように
Windows上にて
SHIFTJIS_CHARSET→SJIS(CP932)
HANGEUL_CHARSET→UHC(Unified Hangul Code)(CP949)
というように、一意に決められているという前提なのですが


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 15年前
投稿: 64
 

うーん...Editに入力された文字を取りだすとふつーUNICODEですよ?


返信引用
山本和弘
 山本和弘
(@山本和弘)
ゲスト
結合: 15年前
投稿: 3
Topic starter  

ちょっと自分でも言っていることに不明な点が出てきたので、一旦スレッドを終了しま
す。

επιστημηさん何度もも丁寧なレスありがとうございました

自分でもうちょっと調べてまた書き込みます!


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました