nmh-workers
[Top] [All Lists]

Re: [Nmh-workers] mhshow: unable to convert character set of...

2015-02-06 09:54:44
Hi,

Norm wrote:
Under Linux, setting the Locale is tricky, because setting several
different environment variables effectively sets the Locale. I had
that problem due to a decade's old setting that I had long since
forgotten. David Levine found the problem. I could never have found it
myself. To this day, I don't know the reason for the ancient setting.

locale(1) shows the locale in use based on its environment.

    $ locale
    LANG=en_GB.utf8
    LANGUAGE=
    LC_CTYPE="en_GB.utf8"
    LC_NUMERIC="en_GB.utf8"
    LC_TIME="en_GB.utf8"
    LC_COLLATE="en_GB.utf8"
    LC_MONETARY="en_GB.utf8"
    LC_MESSAGES="en_GB.utf8"
    LC_PAPER="en_GB.utf8"
    LC_NAME="en_GB.utf8"
    LC_ADDRESS="en_GB.utf8"
    LC_TELEPHONE="en_GB.utf8"
    LC_MEASUREMENT="en_GB.utf8"
    LC_IDENTIFICATION="en_GB.utf8"
    LC_ALL=
    $

They're not all simply the values of the matching environment variables.
To see what variables are affecting its output, trace the calls to
library routine getenv(3).

    $ ltrace -e getenv locale
    getenv("LC_ALL")                  = NULL
    getenv("LANGUAGE")                = NULL
    getenv("LANG")                    = "en_GB.utf8"
    LANG=en_GB.utf8
    getenv("POSIXLY_CORRECT")         = NULL
    LANGUAGE=
    getenv("LC_CTYPE")                = NULL
    LC_CTYPE="en_GB.utf8"
    getenv("LC_NUMERIC")              = NULL
    LC_NUMERIC="en_GB.utf8"
    getenv("LC_TIME")                 = NULL
    LC_TIME="en_GB.utf8"
    getenv("LC_COLLATE")              = NULL
    LC_COLLATE="en_GB.utf8"
    getenv("LC_MONETARY")             = NULL
    LC_MONETARY="en_GB.utf8"
    getenv("LC_MESSAGES")             = NULL
    LC_MESSAGES="en_GB.utf8"
    getenv("LC_PAPER")                = NULL
    LC_PAPER="en_GB.utf8"
    getenv("LC_NAME")                 = NULL
    LC_NAME="en_GB.utf8"
    getenv("LC_ADDRESS")              = NULL
    LC_ADDRESS="en_GB.utf8"
    getenv("LC_TELEPHONE")            = NULL
    LC_TELEPHONE="en_GB.utf8"
    getenv("LC_MEASUREMENT")          = NULL
    LC_MEASUREMENT="en_GB.utf8"
    getenv("LC_IDENTIFICATION")       = NULL
    LC_IDENTIFICATION="en_GB.utf8"
    LC_ALL=
    +++ exited (status 0) +++
    $

This shows that for me, only $LANG is affecting a program's locale.

Cheers, Ralph.

_______________________________________________
Nmh-workers mailing list
Nmh-workers(_at_)nongnu(_dot_)org
https://lists.nongnu.org/mailman/listinfo/nmh-workers

<Prev in Thread] Current Thread [Next in Thread>