<p>What is the difference between UTF and UCS.</p>

<p>What are the best ways to represent not European character sets (using UTF) in C++ strings. I would like to know your recommendations for:</p>

<ul>
<li>Internal representation inside the code

<ul>
<li>For string manipulation at run-time</li>
<li>For using the string for display purposes.</li>
</ul></li>
<li>Best storage representation (<b>i.e.</b> In file)</li>
<li>Best on wire transport format (Transfer between application that may be on different architectures and have a different standard locale)</li>
</ul>

UTC is Coordinated Universal Time, not a character set (I didn't find any charset called UTC).
For internal representation, you may want to use
```
wchar_t
```
for each character, and std::wstring for strings. They use exactly 2 bytes for each character, so seeking and random access will be fast.
For storage, if most of the data are not ASCII (i.e. code >= 128), you may want to use UTF-16 which is almost the same as serialized
```
wstring
```
and
```
wchar_t
```
.
Since UTF-16 can be little endian or big endian, for wire transport, try to convert it to UTF-8, which is architecture-independent.