こんにちは。Tanioka と申します。
やりたいことはインターネットからHTMLファイルを取得してその文字列を
wchar_t の文字列(UNICODE)に変換してメモリ上に展開することです。
しかし取得したHTMLファイルの文字コードが何か分からないので文字コード
の変換ができなくて困っています。HTMLファイルの文字コードを簡単に
判定する方法はないでしょうか?
HTMLの取得は MFC の CHttpConnection を使っています。また文字コードの
変換は libapriconv を使っています。IE7でHTMLを保存すると charset=xxx
のような文字列が含まれていましたが、CHttpConnection で読み込むとこの
ような文字列は含まれませんでした。
以上、よろしくお願いします。
CHttpFile::QueryInfoにHTTP_QUERY_CONTENT_TYPEを指定すれば、
該当部分を含む物がえられると思いますけれど、
この部分に必ずcharsetの指定があるとは限りませんし、
この指定が無いようなホームページも結構ありますから
何処まで対応したいのかをきちんと決めないと難しいと思います。
少なくともcharsetの指定が無い場合に変換を諦めてしまうのか、
内部的に文字コードをスキャンして自動判定を行うのかを
決めないとだめでしょう。
ただ、文字コードの自動判定は結構面倒ですし、誤判定もありえる話なので
charsetを指定していないようなホームページを相手にする必要が無いのであれば、
あっさり諦めるのも手だと思います。
PATIOさん、ありがとうございました。
問題は解決しました。charset がない場合はとりあえず ascii を
前提に変換するようにします。