|
|
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!
|
|
|
|
|