Question : NLS_LANG Turkish support problem

Unix, Oracle 9.2.0.4  Configuration is:
NLS_CHARACTERSET : WE8ISO8859P1
NLS_NCHAR_CHARACTERSET : UTF8

Client : Windows XP Pro
Regional Settings : Turkish and Location : Turkish and Language for non-Unicode Programs : Turkish
I've checked the code page in the registry : ACP 1254 , so I set NLS_LANG in the registry to TURKISH_TURKEY.TR8MSWIN1254

After a  reboot I'm trying in SQLPlus on the client:

CREATE TABLE  temp(name NCHAR(50));

INSERT INTO temp VALUES(n'çüöğş');  -- the string is Turkish text containing g with a line above it  and s with a comma at the bottom

--  insert into temp values(n' written as EN in the language bar setting and çüöğş as TR ( Turkish , Turkish Q)
-- and ');  as EN in the Language bar setting.

SELECT * FROM  temp;
 -- the result is ok except two Turkish letters g with a line above it , and s with a comma at the bottom(Turkish specific characters on English keyboard
-- and TR setting in the language bar are : and [ keys).

What is wrong , the column is NCHAR so the NLS_NCHAR_CHARACTERSET is used on the server(Unicode) , on the client I have a  propper settings for the Turkish.
Where I'm wrong?

Thank You Experts!

Answer : NLS_LANG Turkish support problem

Of course it is so and the behavior is logical. If you set  NLS_CHARACTERSET = WE8MSWIN1252  and it accept this it uses Western Europe codepage 1 character = 1 byte. It shoud be set to AL32UTF8. In this case 1 characte is from 1 up to 4 bytes.

I just made an export/import from one 9i to another 9i instance. i noticed that the default setting for NCHAR is AL16UTF16.
It is enough (up to 2 bytes per character) for most European languages like Turkish.

I am happy that you are from Bulgaria! Best wishes and success!

Random Solutions  
 
programming4us programming4us