I don't know what qDebug uses to put strings onto the console on windows (I assume QString::toLocal8Bit). I know that Qt Creator uses QString::fromLocal8Bit(...) to read the text from the process. That works great everywhere... but unfortunately there is one OS out there that still insists on using codepages that completely break any attempt to display more than one kind of script at a type.

Linux - qDebug output with unicode works: in QtCreators' "Application output"; in terminal when you run program as a separate process; Does not work in qtcreator_process_stub which is used for displaying console app output when application is started from within QtCreator.

Mac OSX - same as with linux ...

Windows - qDebug output with unicode does not work at all. You can make it work on a Windows command shell if you call Win32 function "SetConsoleOutputCP(CP_UTF8);". I have no idea how to achieve this in QtCreators' "Application output".

I am not sure how to treat all this. On one hand debug output is used mostly by app developers. It is not a big problem if debug output is slightly messy. But in my opinion fix is needed for console applications in Windows. And in general maybe it would be good to mention all this in Qt docs so that other people can read and understand what is happening instead of digging in.

qtcreator_process_stub eating unicode is definitely worth a "bug report":http://bugreports.qt-project.org/ ! It should be fully transparent wrt. output received by the application. IIRC it was introduced so we could make sure that the application we start from creator is really getting killed in a reliably way on all platforms.

Ok. I'll make a bug report for qtcreator_process_stub. And I'll also make a bug report for console app on windows. I think Qt should call “SetConsoleOutputCP(CP_UTF8);” automatically for console applications on windows platform ...