How to deal with Unicode strings in C/C++ in a cross-platform friendly way?
I can only suggest you to check this library out: http://cppcms.sourceforge.net/boost_locale/docs/
It might help, it's a boost candidate for now but I believe it will make it.
If you writing portable code:
1st Never use wchar_t
it is nor portable and its encoding is not well defined between platforms (utf-16 windows/utf-32 all others).
Never use TChar, use plain std::string
encoded as UTF-8.
When dealing with Brain Damaged Win32 API just convert UTF-8 string to UTF-16 before calling it.
See https://stackoverflow.com/questions/1049947/should-utf-16-be-considered-harmful as well about how Windows project adopt UTF-8 as main encoding.