I am using Eclipse and TomCat to a Oracle 10g database. Using SQL developer I can enter multi-language characters into the nvarchar2 columns. My application creates SQL update Strings that look like this:

update CLIENTINCUMBENT set UNITCODE = UNISTR('66'), EMPLOYEECODE = UNISTR('000607'), LASTNAME = 'Ыфтвууз', FIRSTNAME = UNISTR('Ощрфк'), JOBCODE = UNISTR('PM003'), BASESALARY = '108160', BASESALARYCURR = UNISTR('USD'), BONUS = '24000', BONUSELIG = 'Y', BONUSCURR = UNISTR('USD'), TGTBONUSPCT = '25000', SUPERVISOREMPLOYEECODE = UNISTR('USD'), DDE005 = UNISTR('5000'), DDE006 = UNISTR('10'), DDE007 = UNISTR('Right Wing'), DDE008 = UNISTR('M'), DDE009 = UNISTR('PHI'), DDE010 = UNISTR('USC'), DDE011 = UNISTR('001738'), DDE012 = '2000-12-22 00:00:00', DDE013 = '24', DDE014 = UNISTR('Caucasian') where clientdataid = 'A10138453627' and EMPLOYEECODE = '000607'

Note the lastname and firstname columns.

The update succeeds however SQL developer shows garbled characters in the lastname and firstname fields.

It does not matter whether I wrap the values in UNISTR or not.

Data the I enter in using the DATA view in SQL developer shows correctly in my web app in the different languages.

If I change the lastname to include both english and cyrillic characters the english characters show through but the cyrillic is garbled.

Can someone point me at what I should be looking at?

Things to look at:

1. Make sure that the Oracle database NLS_NCHAR_CHARACTERSET is set to AL16UTF.
2. Write the code to generate SQL to convert the characters into the unicode codes. They will look like: UNISTR('\0421\0435') in the SQL statements.
3. Make sure that any double \\ are coverted to single prior to sending the sql for action

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.