[Proj] Unicode

Thomas Knudsen knudsen.thomas at gmail.com
Mon Jun 8 13:52:02 EST 2009


2009/6/8 Gerald I. Evenden <geraldi.evenden at gmail.com>

>
> Besides, why take up vast quantities of bytes with 16 bit code where
> special
> inline doublet or triplet escape coding like LaTex uses can do the job with
> 7
> bit ASCII with ease.
>

That's what UTF-8 is for.

Markus Kuhn gives all the details in
http://www.cl.cam.ac.uk/~mgk25/unicode.html - from where I quote the
following item of interest:

C support for Unicode and UTF-8

Starting with GNU glibc 2.2, the type wchar_t 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
__STDC_ISO_10646__ macro as required by ISO C99. The ISO C multi-byte
conversion functions (mbsrtowcs(), wcsrtombs(), etc.) are fully implemented
in glibc 2.2 or higher and can be used to convert between wchar_t and any
locale-dependent multibyte encoding, including UTF-8, ISO 8859-1, etc.

For example, you can write

  #include <stdio.h>
  #include <locale.h>

  int main()
  {
    if (!setlocale(LC_CTYPE, "")) {
      fprintf(stderr, "Can't set the specified locale! "
              "Check LANG, LC_CTYPE, LC_ALL.\n");
      return 1;
    }
    printf("%ls\n", L"Schöne Grüße");
    return 0;
  }

Call this program with the locale setting LANG=de_DE and the output will be
in ISO 8859-1. Call it with LANG=de_DE.UTF-8 and the output will be in
UTF-8. The %ls format specifier in printf calls wcsrtombs in order to
convert the wide character argument string into the locale-dependent
multi-byte encoding.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.maptools.org/pipermail/proj/attachments/20090608/6f04b608/attachment.htm 


More information about the Proj mailing list