将西里尔文存储在Oracle中

时间:2011-02-10 10:26:25

标签: oracle character-encoding internationalization

我有以下设置的Oracle数据库

NLS_CHARACTERSET                 EE8MSWIN1250
NLS_NCHAR_CHARACTERSET           AL16UTF16
NLS_LANGUAGE                     AMERICAN

我已经创建了一个NVARCHAR2类型的测试表,我将在那里存储西里尔文。

我使用SQL Developer连接数据库。

问题是,当我使用SQL Developer单元将西里尔链放入DB时,数据存储正确。但是当我使用N''使用相同数据的INSERT查询时,数据会被存储为问号。

有趣的是SQL Developer生成的查询和我编写的查询完全相同。

我通过将NLS_CHARACTERSET更改为UTF8解决了这个问题,但在生产服务器上我无法做到这一点。

IMO必须以某种方式使用查询以适当的方式将西里尔文存储到该数据库中,如果SQL Developer可以这样做的话。

此致

1 个答案:

答案 0 :(得分:0)

根据使用的ODBC / JDBC,计算机上的本地化设置可能会覆盖数据库中的任何配置值。尝试使用ALTER SESSION并在执行查询之前设置正确的NLS参数,看看是否有帮助。当您编辑数据单元格时,SQL开发人员可能会在幕后执行此操作。