All windows compilers should treat wchar_t literals at UTF16LE during execution. However, MSVC didn't understand source code that's encoded in something other than the users ACP until 2005 (I believe). (Well, you could tell compiler which code page to use via #pragma setlocale, but the source file is still code-page encoded.)
In the 2008 IDE, you have File->Advanced Save Options, which lets you save files as, for example, UTF8-with-BOM. The problem is when someone else uses an editor that doesn't understand that - or tries to use that code with a different compiler etc.
Resource files are fine, however you'll be representing the strings in the same way that you should be representing them in your source code - using only the basic source character set:
STRINGTABLE Resource (Windows)
VC++ 2003 added support for universal character names in identifiers and literals (C99 feature). So you could use \u instead of \x in source files.
GCC has -finput-charset, -fexec-charset, -fwide-exec-charset - but it's a good idea to stick with the defaults for the platform, and just use the basic source character set here as well.