我在评论中建议的类型转换似乎有效(对我来说)。
演示
我有一个AL32UTF8
远程数据库和一个EE8MSWIN1250
本地数据库,所以我不得不使用不同于罗马尼亚语的东西,因为这些字符存在于 cp1250 代码页中。那就去找些俄罗斯人吧。
在远程数据库...
create table test_the_charset (xxx varchar2(256 char));
insert into test_the_charset (xxx)
values (n'ÎNTREPRINDERE INDIVIDUALĂ');
insert into test_the_charset (xxx)
values (n'Сегодня замечательный день, чтобы помочь людям на StackOverflow.com.');
commit;
在本地数据库...
SQL> select xxx from test_the_charset@my_remote_db;
XXX
--------------------------------------------------------------------------------
ÎNTREPRINDERE INDIVIDUALĂ
??????? ????????????? ????, ????? ?????? ????? ?? StackOverflow.com.
SQL> select cast(xxx as nvarchar2(2000)) from test_the_charset@my_remote_db;
CAST(XXXASNVARCHAR2(2000))
--------------------------------------------------------------------------------
ÎNTREPRINDERE INDIVIDUALĂ
Сегодня замечательный день, чтобы помочь людям на StackOverflow.com.
SQL>
至于“为什么会这样”……
我不知道。根据定义,ISO8859-2 应该允许存储罗马尼亚字符,因此它们应该通过 DB 链接毫无问题地传输。然而,在你的情况下,他们没有。