At a guess I'd say that your LANG setting includes a '.uft8'
at the end, and that you're running perl-5.8.0. In that
case, perl unfortunately concludes that all its input is
utf-8 encoded, and characters in the range 128-255 get
generally screwed up. If this is the case, either upgrade
to a
newer perl release, or remove the .utf8 suffix from $LANG.
Dave. | [reply] |
What version of Red Hat? What is your LANG env variable? What encoding are you using for your terminal? Your database?
You need to match the encoding of the terminal, LANG environment, and database if you want to see characters properly. Or do the character set translation. Inside the Oracle client is a common place (that is what NLS_LANG controls).
LANG signals the locale for formatting dates and stuff, and also the character set. For example en_US.UTF-8 is UTF-8.
Perl should not do any character set translation by default. Some older 5.8 versions of Perl had problems with opening stdout as utf8 when .UTF-8 was on LANG. This caused module install problems. Newer versions fixed this problem but some Red Hat releases shipped with those versions of Perl, and put UTF-8 on the locale. Red Hat 9 is the one that caused the most trouble.
| [reply] |
Thanks for the replies,
Red Hat : Red Hat Enterprise Linux ES release 3 (Taroon Update 1)
LANG=en_US.UTF-8
Putty Terminal encoding UTF-8
I have cut Oracle out completely, I have the simplest possible to test the problem, i.e.
print "Umlaut Üü\n";
If I leave LANG set, I can edit my script and type Üü in vi, but the output is messed up when I run it, if I unset LANG, the script output looks good, but I can't use vi to edit the umlauts.
What setting(s) do I need to be able to print a Ü from perl *and* be able to edit the script and change it?
Cheers,
Tony
| [reply] |
Like I said earlier, remove the .utf8 suffix from $LANG,
ie in you case, set it to en_US.
Dave.
| [reply] |