<div class="gmail_quote">2009/6/8 Gerald I. Evenden <span dir="ltr">&lt;<a href="mailto:geraldi.evenden@gmail.com">geraldi.evenden@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im"><br>
</div>Besides, why take up vast quantities of bytes with 16 bit code where special<br>
inline doublet or triplet escape coding like LaTex uses can do the job with 7<br>
bit ASCII with ease.<br></blockquote></div><br>That&#39;s what UTF-8 is for.<br><br>Markus Kuhn gives all the details in <a href="http://www.cl.cam.ac.uk/~mgk25/unicode.html">http://www.cl.cam.ac.uk/~mgk25/unicode.html</a> - from where I quote the following item of interest:<br>
<br><h2 id="c">C support for Unicode and UTF-8</h2>

<p>Starting with GNU glibc 2.2, the type <samp>wchar_t</samp> is
officially intended to be used only for 32-bit ISO 10646 values,
independent of the currently used locale. This is signalled to
applications by the definition of the <samp>__STDC_ISO_10646__</samp>
macro as required by ISO C99. The ISO C multi-byte conversion
functions (<samp>mbsrtowcs()</samp>, <samp>wcsrtombs()</samp>, etc.)
are fully implemented in glibc 2.2 or higher and can be used to
convert between <samp>wchar_t</samp> and any locale-dependent
multibyte encoding, including UTF-8, ISO 8859-1, etc.

</p><p>For example, you can write

</p><pre>  #include &lt;stdio.h&gt;<br>  #include &lt;locale.h&gt;<br><br>  int main()<br>  {<br>    if (!setlocale(LC_CTYPE, &quot;&quot;)) {<br>      fprintf(stderr, &quot;Can&#39;t set the specified locale! &quot;<br>
              &quot;Check LANG, LC_CTYPE, LC_ALL.\n&quot;);<br>      return 1;<br>    }<br>    printf(&quot;%ls\n&quot;, L&quot;Schöne Grüße&quot;);<br>    return 0;<br>  }<br></pre>

<p>Call this program with the locale setting <samp>LANG=de_DE</samp>
and the output will be in ISO 8859-1. Call it with
<samp>LANG=de_DE.UTF-8</samp> and the output will be in UTF-8. The
<samp>%ls</samp> format specifier in <samp>printf</samp> calls
<samp>wcsrtombs</samp> in order to convert the wide character argument
string into the locale-dependent multi-byte encoding.

</p><br>