[Proj] Proj may give erroneous results depending on locale
glynn.clements at virgin.net
Tue Jul 20 22:50:12 EDT 2004
Peter S Galbraith wrote:
> Hi, a Debian user (Radoslaw Grzanka <radekg2 at poczta.onet.pl>) reported
> the following bug when his locale is set to pl_PL :
> setlocale (LC_ALL, ""); // SETTING LOCALES!
As the old joke goes:
Patient: Doctor, when I do this ... it hurts.
Doctor: Don't do it, then!
Simple fix: don't call setlocale().
Writing internationalised software is non-trivial. In particular, it's
not a matter of simply calling setlocale() at the beginning of the
program then forgetting about it.
If you want to read/write numbers using printf/scanf etc (or if you
want to use libraries which do so), you have to keep switching locales
between the user's locale (defined by the LC_* and LANG environment
variables) and the C (aka POSIX) locale, as most textual file formats
and communication protocols require that decimal fractions use the
period (aka dot, full-stop) as the decimal separator, regardless of
the user's locale.
And many (most?) libraries require that the current locale is the C
locale. So, if you want to set the LC_NUMERIC category to something
other than the C locale, you have to set it back again before calling
any library functions.
IOW, the bug is in the application code, not in PROJ.
Glynn Clements <glynn.clements at virgin.net>
More information about the Proj