大西彰のウェブログ

データベース系技術ネタ、国際化技術ネタなど、徒然なるままに

目次

Blog 利用状況

ニュース


こんにちは。大西 彰です。
私のブログでは、データベース技術、ソフトウェアの国際化などを取り扱っています。ニッチだけど重要なネタがつまっています。
ブログの内容は無保証です。
また、本ブログでの発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。



マイクロソフトライセンスセンター
マイクロソフトライセンスセンター
マイクロソフトライセンスセンター
ウィルコムストア
ソースネクスト
デル株式会社
アフィリエイト リンクシェア ブログ 携帯対応 成果報酬 広告 テンプレート ブログパーツ

テクノラティプロフィール

記事のカテゴリ

過去の記事

カテゴリ

イメージギャラリ

My blog

Visual FoxPro

Visual Studio

Web Sites

Windows Vista

ブログ

免責事項

MFC4.2のCStringでUTF-8文字列を取り扱う際の注意事項

Visual C++ 6.0というか、MFC4.2ネタとも言えますが、はまって時間を無駄にする人を増やしたくないので、記事にしておきます。

MFC4.2のCStringにBOM(Byte Order Mark)付きのUTF-8文字列を代入するとなぜかワイド文字用のコンストラクタが起動されてしまい、正常に文字列を格納することができません。このため、CStringにUTF-8文字列を代入するときは、BOMを削除して代入する必要があります。

// 代入したいUTF-8の文字列データがpszUTF8で参照できると仮定して、
// 先頭にBOMがあるかどうかを判定する

LPSTR pszUTF8noBOM = NULL;
if ( (unsigned char)pszUTF8[0] == 0xEF &&
     (unsigned char)pszUTF8[1] == 0xBB &&
     (unsigned char)pszUTF8[2] == 0xBF ) {
    pszUTF8noBOM = pszUTF8 + 3;
}
else {
    pszUTF8noBOM = pszUTF8;
}
// UTF-8文字列をBOM無しの状態でCStringに格納します
CString utf8Buffer = pszUTF8noBOM;

こうすることで、MFC4.2のCStringにUTF-8文字列を代入できます。

別の記事で、UTF-8文字列が入っているファイルをMBCS文字列に変換するフィルターを紹介します。

投稿日時 : 2004年9月16日 17:44

コメントを追加

# UTF-8からMBCSへの変換 2004/09/16 18:02 大西彰のウェブログ

UTF-8からMBCSへの変換

タイトル  
名前  
URL
コメント