Вы сохраняете строку unicode
в колонке varchar2
. Рассмотрите возможность сохранения их в столбцах типа nvarchar2
.
create table my_table
(
id number(10),
my_column varchar2(100),
my_column_uni nvarchar2(100)
);
insert into my_table values(1, UNISTR('\0436'), UNISTR('\0436'));
commit;
select rawtohex(my_column), rawtohex(my_column_uni)
from my_table
where id = 1;
Вывод будет E6
для столбца varchar2 и 0436
для NVARCHAR2 колонны. Oracle изменяет кодировку на основе вашего nls parameters, где у вас есть параметры NLS_CHARACTERSET
и NLS_NCHAR_CHARACTERSET
NLS. Вы можете запросить свои конкретные параметры.
select *
from nls_database_parameters
Какая у вас кодировка базы данных? Может ли он на самом деле хранить широкие символы? NLS_CHARACTERSET. Если нет, вы можете переустановить или использовать столбец NVARCHAR/NCLOB. – eckes