ShellExecuteのメーラー起動で文字化けします


東京みやげ  2007-12-08 19:33:14  No: 67170  IP: 192.*.*.*

いつもお世話になっております。

Vistaで下記コードを実行すると、ダブルバイト(あいうえお)が文字化けしてしまいます。XP+VC6では問題なく動作していましたが、Vista+VC2005で非互換になってしまいました。

  CString string;
  string  = _T("mailto:");
  string += _T("?subject=");
  string += _T("あいうえお");
  string += _T("&body=ABCDE");
  ShellExecute(NULL, _T("open"), string, NULL, NULL, SW_SHOWNORMAL);

どなたかヒントがあればご教授下さい。

編集 削除
通りすがり  2007-12-08 20:03:05  No: 67171  IP: 192.*.*.*

VC++6.0→VC++2005で文字コード標準設定がMBCSからUNICODEになったけど
その辺かな?
TCHAR使ってるし

編集 削除
Akazaru  2007-12-12 13:57:48  No: 67172  IP: 192.*.*.*

ロケールの設定とかでしょうか?
::_tsetlocale(LC_ALL, _T("Jpn"));

編集 削除
ゴン  2007-12-28 14:46:46  No: 67173  IP: 192.*.*.*

そもそもメーラーの引数にUTF-16ってOKなんですか?

編集 削除
RAPT  URL  2007-12-28 15:22:21  No: 67174  IP: 192.*.*.*

これではどう?

CStringA string;
string  = "mailto:";
string += "?subject=";
string += "あいうえお";
string += "&body=ABCDE";
ShellExecuteA(NULL, "open", string, NULL, NULL, SW_SHOWNORMAL);

編集 削除