It depends on what you're doing, but after many years I've just settled on consistently using UTF-8 internally and converting to UCS-2 at the edges when interacting with Win32.
There's just too much UTF-8 input I also need to take, and converting those to wstring hurts my heart.