title: Making Win32 Application work on ANSI & UNICODE
body: <p>I want to make my Win32 C++ application able to be played on any encoding version (UNICODE &amp; ANSI). Now I am a little confused as to what exactly is the difference between the two(or more?) encodings?</p>
  
  <p><em>To make my Win32 application cross-encoding compatible does that mean I have to go through my code &amp; replace every std::string with std::wstring, then replace every char</em> with a wchar_t* and then replace every literal string("") with L""?</p>
  
  <p><strong>What will happen if my application runs on a UNICODE machine &amp; my application has one std::string in it?</strong></p>
  
  <p>Do you have any advice on the steps I need to take to make my application cross-encoding compatible?
  For eg:
  - Change all c_strings &amp; strings to their UNICODE equivalent
  - Change any Win32 functions to the uncide version (eg, change from getenv() to _wgetenv())</p>