correct value for LANG variable

Tim Robbins tjr at freebsd.org
Sat Jan 22 08:41:34 PST 2005


On Sat, Jan 22, 2005 at 04:52:45PM +0100, Bj?rn K?nig wrote:
> I am a bit confused. Neither de_DE.ISO-8859-1 nor
> de_DE.ISO8859-1 work properly in all cases.
> 
> > setenv LANG de_DE.ISO8859-1
> > echo abcdef uvwxyz | tr '[a-z]' '[A-Z]'
> ABCDEF ?WXY?]

For better or worse, this is not the correct way to perform case conversion
in non-ASCII locales on FreeBSD 5 and later. See the COMPATIBILITY section
of the tr(1) manpage for more information.

> 
> > setenv LANG de_DE.ISO-8859-1
> > echo abcdef uvwxyz | tr '[a-z]' '[A-Z]'
> ABCDEF UVWXYZ
> > perl
> perl: warning: Setting locale failed.
> [lot of indignation about locale settings]

FreeBSD uses the name de_DE.ISO8859-1 instead of de_DE.ISO-8859-1.
Most base system utilities don't complain if LANG or the related LC_*
variables are invalid.

> 
> I am suspicious that de_DE.UTF-8 would work correct
> with most software. Is it the only solution to don't
> use localization currently at all or should it be my
> ambition to fix this? What should be the correct
> value? I would prefer the notation "ISO-8859-1", but
> even the almighty perl does not.

Setting LANG to de_DE.ISO8859-1 should work.

The alternative is UTF-8, which is understood by most text-processing
utilities in the base system (ls, wc, grep, sed, ...). However, at this
stage neither sh nor vi work correctly with UTF-8, so you would need to
replace these with (for example) bash and vim.


Tim


More information about the freebsd-stable mailing list