What I am sure about is that the command line MUST accept Unicode (int argc, WCHAR argv[]). This is a requirement for my utilities which must take file names via command line. And some files may be named using national characters.
But as for the console output, things are quite different here... I wouldn't change Cout() right now.
Well, we still have to maintain win98 compatibility... that is why we are using ANSI mode. Anyway, it looks like we can fix the issue using GetCommandLineW here.