What's your NLS_LANG setting in Windows?
(ie check your registry, for the Oracle cilent install, there should be an NLS_LANG setting.)
1010223 wrote:I wonder if that's the problem, then?
From the database side, you have:
1 NLS_LANGUAGE AMERICAN
2 NLS_TERRITORY AMERICA
9 NLS_CHARACTERSET WE8MSWIN1252Now, the character set itself matches, however, the language and territory doesn't. I myself, am not 100% if that's having an effect - hopefully somebody else more knowledgeable can help :) Sorry I can't help more than that. You might try that, though. It won't hurt to change 1 PC windows registry to match the database, and see if it has an effect. If not, change it back.
Do not worry about language and territory. They are irrelevant for display of characters.
What tool do you actually use to look at the characters?
We use PLSQL developer (http://www.allroundautomations.com/plsqldev.html).
But we have te same problems in a .Net application.
Please, make sure you look into the right Registry key when looking at NLS_LANG. Start your .NET application or PL/SQL Developer and use a tool such as procmon.exe from Sysinternals suite to look at what Oracle DLL libraries are loaded. Look into the \BIN\ directory containing the libraries and search for the file oracle.key. This file contains the Registry branch name that you should check. Look at bot HKEY_CURRENT_USER and HKEY_LOCAL_MACHINE branches. Also, environment variables override the registry. Open the Command Prompt window, issue the SET command with no parameters and check if NLS_LANG is not among the variables. Make sure that any identified setting contains .WE8MSWIN1252.1 person found this helpful
Do you use ODP .NET for the .NET application? This API should actually be immune to NLS_LANG. When looking at data in the .NET application, make sure that you look at data inserted by the application itself or by Oracle SQL Developer. If you look at data inserted with PL/SQL Developer with a wrong NLS_LANG, the data is already corrupted in the database.
I will check those settings.
But I forgot to mention that also in SQLPlus, we have the same issue.
When I use procmon to monitor our appliction, I could only find 1 entry with NLS_LAN:
HKLM\SOFTWARE\Wow6432Node\ORACLE\NLS_LANG, but the result was: NAME NOT FOUND.
When I use regedit, this entry doesn't exists: link
In the oracle.key file I found this:
But that doesn't exists either.
In regedit, this was the only hit for NLS_LANG:
SET in command prompt didn't show a record for NLS_LANG.
What is the best solution? Is this a bug?
When I add this entry: HKLM\SOFTWARE\Wow6432Node\ORACLE\NLS_LANG, then everything seems to work. But maybe there is a better solution?
We found out that on some machines their was also oracle.key file in de root directory (the folder where also the BIN folder exists).
And it was this location that was used. On my system the file didn't exists, so I added it and that solved the problem.