2016-12-28 76 views
0

我正在从Java程序中插入一些特殊字符像»é‡æßÌæ到Oracle 11g数据库,但在数据库会存储为»é¿æß¿ 012不能插入从java程序的特殊字符到Oracle 11g数据库

某些字符被替换为‡替换。 请告诉我什么是这样做的正确方法。 在此先感谢。

Manish

+0

您是否能够在数据库中存储所有有问题的字符,即通过另一个客户端(如SQLDeveloper)?数据库的字符集是什么? –

+0

嗨米克,谢谢你的回复。我的数据库字符集是WE8ISO8859P1,我无法将其更改为utf-8。这就是为什么我将我的印地文文本转换为这些特殊字符并保存到数据库。但正如你所看到的一些人物不会被取代。 –

回答

0

您应该选择数据类型UTF8GENERALCI。

0

对Oracle数据类型使用UTF-8编码。

0

检查您的数据库设置为使用Unicode:

select * from nls_database_parameters 
    where parameter='NLS_CHARACTERSET'; 

如果答案是AL32UTF8,你的罚款。如果它是像WE8ISO8859P1那样,您有问题。在这种情况下没有简单的解决方案;你必须建立一个新的数据库实例。

+0

嗨Ammo,谢谢你的回复。是的,我的数据库字符集是WE8ISO8859P1,我无法将其更改为utf-8。任何其他方式来做同样的事情都会很感激。 –

+0

如果您至少可以更改表结构,请将NVARCHAR2而不是VARCHAR2用于需要unicode支持的列。如果这不可能,你的最后一个选择是以某种方式编码你的字符串,然后再将它写入数据库,并在读回数据库后对它进行解码。例如,您可以使用Base64编码或HTML编码将这些unicode字符串更改为ISO8859P1 VARCHAR2可以处理的内容。 –

+0

Ammo,谢谢你的回复。我尝试过NVARCHAR2,但结果相同。我想我错过了一些东西。是否有任何必需的操作系统级别设置或使用JDBC连接数据库时的设置。 –