插入时oracle + java编码问题

时间:2010-12-29 11:00:27

标签: java oracle encoding

我有点坚持这个。我不是java或oracle大师,所以请详细解答:)

我有一个在DB中插入内容的Web服务。 Web服务托管在轴上。 db是具有以下属性的oracle:

NLS_LANGUAGE    AMERICAN
NLS_TERRITORY   AMERICA
NLS_CHARACTERSET    ZHS16GBK

网络服务托管在Windows Server 2008,英文版,但我已将系统的区域设置更改为中文

现在插入后的数据有编码问题,并显示奇怪的字符,如????,exxk ??

jws文件具有GBK编码。并且插入到数据库中的数据在文件中进行了硬编码[我们没有从REQUEST中读取]

[编辑] 只有一件事,将整个数据库更改为utf-8是不可行的,因为它有很多表和数据

[进一步编辑]使事情更加清晰

机器接受来自两个来源的数据。基本上它用于向我们订阅的用户发送和接收短信/毫秒。主要是,它与GSM操作员控制中心一起运行,所有编码都以GBK处理。另一方面,该机器还接受来自网站的请求以向用户发送sms / mms。这里的编码以UTF-8处理。如果网站想要向用户发送短信,它将调用该机器上的网络服务,该服务将数据插入数据库[我们的问题在这里]。然后Windows服务不断检查数据库,如果发现任何新的发送短信/毫秒的请求,它将发送短信/毫秒并删除记录。

旧机器上的一切都运行正常,因为它有中文版的Windows 2003.我们升级到新服务器并在其上安装了Windows 2008服务器英文版。现在,在Web服务插入数据库后,数据会失真。

2 个答案:

答案 0 :(得分:1)

将字符设置为UTF8。

答案 1 :(得分:0)

我还建议选择UTF8作为数据库字符集。

请注意,因为默认情况下java使用UTF16编码。 要设置java使用的默认编码,请使用'file.encoding'标志:

java -Dfile.encoding = UTF8 ...

我从未听说过ZHS16GBK字符集,但似乎没有java支持:

http://download.oracle.com/javase/1.4.2/docs/guide/intl/encoding.doc.html