由中文“·”不能正确写入Oracle中——jdbc 字符集和数据库字符集的问题

自: http://space.itpub.net/3326/viewspace-566992

 

今天突然想研究研究jdbc读异体字的问题,官方文档上,居然让我看到了这样一段话,一直的想法就是想让jdbc和数据库读取时不发生字符集转换来实现,看来希望没有了
In versions of the Oracle JDBC drivers prior to 10g release 1(10.1), there were performance advantages to usingoracle.SQL.CHAR. In Oracle Database 10g, there are no longerany such advantages. In fact, optimum performance is achievedusing java.lang.String. All Oracle JDBC drivers handle all character data in the Java UCS2 character set. Using
oracle.sql.CHAR does not prevent conversions between the database character set and UCS2.

 

 

其实造成异体字的主要原因是:
        oracle数据库服务端和客户端的字符集一致时,当客户端输入的字符不是 数据库字符集所包含的字符时,oracle数据库由于客户端服务器端字符集一致,不做字符集转换,直接将编码存入数据库中.在读取的时候,如果客户端和服务端的字符集一致,数据库直接将编码返回,客户端操作系统只要支持该字符,显示就是正常的,
        但是如果客户端和服务端字符集不一致,这时候,数据库服务器将进行字符集转换,但是该字符本身是不存在的,所以就会出现‘?’这种情况了.
        jdbc从oracle10g开始,都是通过unicode进行转换的,无法避免,所以会导致出现即使网页或客户端是支持该字符的情况,返回的也还是‘?’.&w

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值