title: Cross-platform C++: Use the native string encoding or standardise across platforms?
body: <p>We are specifically eyeing Windows and Linux development, and have come up with two differing approaches that both seem to have their merits.  The natural unicode string type in Windows is UTF-16, and UTF-8 in linux.  </p>
  
  <p>We can't decide whether the best approach:</p>
  
  <ol>
  <li><p>Standardise on one of the two in all our application logic (and persistent data), and make the other platforms do the appropriate conversions</p></li>
  <li><p>Use the natural format for the OS for application logic (and thus making calls into the OS), and convert only at the point of IPC and persistence.</p></li>
  </ol>
  
  <p>To me they seem like they are both about as good as each other.</p>