MultiByteToWideChar

文字列をワイド文字列(Unicode 文字列)に変換します。

int MultiByteToWideChar(
    UINT   uCodePage,     // コードページ
    DWORD  dwFlags,       // フラグ
    PCSTR  pMultiByteStr, // 変換元の文字列アドレス
    int    cchMultiByte,  // 文字列の長さ
    PWSTR  pWideCharStr,  // バッファアドレス
    int    cchWideChar    // バッファサイズ
);

KERNEL32.DLL

引数

uCodePage

変換時に使用されるコードページを指定します。このパラメータは、インストールされているかシステムで使用可能であるすべてのコードページを指定することができます。また、以下の値の1つを指定することもできます。

意味
0 (CP_ACP) ANSI コードページ
1 (CP_OEMCP) OEM コードページ
2 (CP_MACCP) Macintosh コードページ
3 (CP_THREAD_ACP) Windows 2000/XP: 呼び出しスレッドの ANSI コードページ
42 (CP_SYMBOL) Windows 2000/XP: シンボルコードページ
65000 (CP_UTF7) Windows 98/Me/NT 4.0 以降: UTF-7 を使用して変換
65001 (CP_UTF8) Windows 98/Me/NT 4.0 以降: UTF-8 を使用して変換

これを指定した場合、 dwFlags パラメータは 0 でなければなりません。

dwFlags

ビットフラグを指定します。 0 または以下の値の組み合わせを指定します。

意味
0x00000001 (MB_PRECOMPOSED)

composite characters (ベースキャラクタとノンスペーシングキャラクタが1キャラクタ値で表される)を使います。 MB_COMPOSITE と組み合わせて使用することはできません。

0x00000002 (MB_COMPOSITE)

composite characters (ベースキャラクタとノンスペーシングキャラクタが異なるキャラクタ値を持つ)を使います。 MB_PRECOMPOSED と組み合わせて使用することはできません。

0x00000004 (MB_USEGLYPHCHARS)

制御文字の代わりにグリフを使います。

0x00000008 (MB_ERR_INVALID_CHARS)

無効な文字が合った場合は関数が失敗して GetLastError 関数は 1113 (ERROR_NO_UNICODE_TRANSLATION) を返します。

例えば、文字「 è 」では、「 e 」がベースキャラクタになり、アクセント記号「 ` 」がノンスペーシングキャラクタになります。

pMultiByteStr

変換元の文字列のアドレスを指定します。

cchMultiByte

pMultiByteStr パラメータで表される文字列のサイズをバイト数で指定します。 -1 を指定すると、ヌル終端文字までとみなされ、サイズが自動的に計算されます。

pWideCharStr

変換された文字列を受け取るバッファのアドレスを指定します。

cchWideChar

pWideCharStr パラメータで指定されるバッファのサイズを文字数で指定します。

0 を指定すると、この関数は必要なバッファサイズを返します。

戻り値

cchWideChar パラメータに 0 以外の値を指定して関数が成功した場合、 pWideCharStr パラメータの示すバッファにコピーされた文字数が返ります。

cchWideChar パラメータに 0 を指定して関数が成功した場合、文字列を変換するのに必要なバッファサイズが文字数単位で返ります。

関数が失敗すると 0 が返ります。拡張エラー情報を取得するには、 GetLastError 関数を使います。 GetLastError 関数は以下のいずれかの値を返します。

解説

pMultiByteStr パラメータと pWideCharStr パラメータには同じアドレスを指定してはいけません。同じアドレスを指定した場合には関数は失敗して GetLastError 関数が 87 (ERROR_INVALID_PARAMETER) を返します。

対応情報

Windows 95 以降 / Windows NT 3.1 以降