ОК, значит, вы говорите, что
SELECT value
FROM v$nls_parameters
WHERE parameter = 'NLS_CHARACTERSET'
возвращает UTF8
? Это довольно необычно, особенно в 11g - гораздо чаще можно увидеть значение AL32UTF8
, которое является более поздней версией стандарта Unicode.
Что происходит, когда вы смотрите на данные, которые фактически хранятся в базе данных? Если вы выполняете тот же запрос, который вы выполняете через JDBC, непосредственно к базе данных, но вызываете функцию DUMP
вместо того, чтобы просто выбирать столбец, каков результат?
SELECT DUMP( column_name, 1016 )
FROM table_name
WHERE some_key = some_value
Используете ли вы тонкий драйвер Oracle JDBC? Или вы используете драйвер OCI JDBC? Или вы используете драйвер Oracle ODBC и мост JDBC-ODBC, как подразумевают ваши теги? Последнее было бы исключительно необычно в наше время - на самом деле нет никаких причин использовать драйвер моста JDBC-ODBC, если платформа базы данных предоставляет собственный драйвер JDBC.
Установлен ли NLS_LANG
на клиенте?