MFCの基礎 - UTF-8
ナビゲーションに移動
検索に移動
概要
wchar_tはUTF-16に対応しており、Shift-JIS等からUTF-8に直接的で変換できない。
ここでは、様々な文字コードからUTF-8へ変換する方法を記載する。
サンプルコード
#include <windows.h>
char *buf1;
wchar_t buf2[512];
// Shift-JISからUTF-16へ変換
::MultiByteToWideChar(CP_ACP, 0, buf1, -1, buf2, 512);
// UTF-16からUTF-8へ変換
::WideCharToMultiByte(CP_UTF8, 0, buf2, -1, buf1, 512, NULL, NULL);
UTF-8では、ファイルの先頭にUTF-8であることを示す3バイトのデータ0xEF、0xBB、0xBFが付加されている。(BOMという)
UTF-8のファイルを出力する場合、以下のように出力しないと、UTF-8として正しく認識されない。
(BOMが付加されていないUTF-8をUTF-8Nという)
buf2[0] = 0xEF;
buf2[1] = 0xBB;
buf2[2] = 0xBF;
buf2[3] = nullptr;