On Feb 14, 2012, at 11:45 AM, Alf P. Steinbach wrote: > > The main problem (pun not intended) in C and C++ is that neither standard > `main` nor non-standard Microsoft `WinMain` provide the command line > arguments in Unicode. Standard `main` has `char` arguments, by Windows > convention encoded in Windows ANSI, which generally means data loss and e.g. > that some file names can't be passed. Microsoft `WinMain` provides the > arguments part of the command line, in Unicode, but not split up into > individual arguments. > > I do not yet know the valid signatures for a D standard `main`. > > But if those D signatures include one with a set of Unicode arguments, then > all is super-duper, and if not, then one must just do in D what one must do > in C and C++ for a real and standard-conforming program, namely to use the > Windows API to retrieve the arguments (if necessary).
D should pass the command-line args as properly translated UTF-8. If this doesn't happen, consider it a bug. Regarding Windows specifically, D currently gets the args via GetCommandLineW(), so if that doesn't muck things up then all should be well.
