我有点坚持这个。我不是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服务插入数据库后,数据会失真。
答案 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