MultiByteToWideChar の第一引数に何を指定してよいものやら

MultiByteToWideChar 関数によると、第一引数にはコードページを渡すことになっているんだけど、説明があっさりしすぎてどれを指定してよいのかさっぱりわからない。

CP_ACP: ANSI コードページ
CP_OEMCP: OEM コードページ
CP_THREAD_ACP: 現在のスレッドの ANSI コードページ

どれを指定しても、Shift_JIS(CP932)から Unicode への変換はとりあえずうまくいっているのが困りもの。Big5 とかを使ったらいったいどうなるのか試してみたい。

      • -

追記:2008/10/31

中国語(繁体字)版の Windows XP で試してみたところ、ちょっとだけ理解できた。

  • 変換前の文字列が ASCII のみであるなら、CP_ACP で OK
  • 変換前の文字列が Shift_JIS なら、いずれの指定でも NG
    • その場合 932 を指定すると OK。文字化けしない
  • mbstowcs を使うと文字化けする

変換前のマルチバイト文字が Shift_JIS とわかっている場合は 932 を指定すればよいということかな。