int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
  _tprintf(_T("日本語\n"));
  return 0;
}

UNICODEにすると、ちゃんと動かない!

最初に
_tsetlocale(LC_ALL, _T(""));
したら動くようになったけど、そんな約束、どこに書かれてるよ・・・orz

MBCSなら何もしなくても「日本語」が出るのにさ・・・。