甲骨文,utf-8,NVARCHAR2,以及很多混乱

甲骨文,utf-8,NVARCHAR2,以及很多混乱,第1张

概述我在oracle 10g数据库中有以下“翻译”表:ID VARCHAR2(100 BYTE) LANGUAGE CHAR(2 BYTE) COUNTRY CHAR(2 BYTE) TRANSLATION NVARCHAR2(2000 CHAR) TRACK_TIMESTAMP DATE TRACK_USER VARCHAR2(2000 BYTE)

我在oracle 10g数据库中有以下“翻译”表:

ID  VARCHAR2(100 BYTE)LANGUAGE    CHAR(2 BYTE)COUNTRY CHAR(2 BYTE)TRANSLATION NVARCHAR2(2000 CHAR)TRACK_TIMESTAMP DATETRACK_USER  VARCHAR2(2000 BYTE)

当我尝试这样做时:

update translation set translation = 'œ' where ID = 'MY_ID' And language = 'fr';

然后我运行这个:

select * from translation where ID = 'MY_ID' and language = 'fr';

并且翻译栏显示:S而不是 – 我不明白为什么.

由于遗留问题,我无法将整个数据库转换为使用UTF-8,还有其他选择吗?

目前国家字符集是AL16UTF16.普通字符集是WE8ISO8859P1.

我目前正在使用java 1.6

以上是一个简化的例子.以下是我的实际应用程序中的查询:

UPDATE TRANSLATION SET TRANSLATION=? WHERE TRANSLATION.COUNTRY=? and TRANSLATION.ID=? and TRANSLATION.LANGUAGE=? 1=1,800 - 2,500 œufs par heure 2=CA 3=3_XT_FE_ECS18 4=fr

这里的问题是,而不是添加œufs它添加¿ufs最佳答案由于您使用的是绑定变量而不是硬编码的文字,因此您应该能够将Unicode字符串传递给UPDATE语句.

如果您使用直接JDBC写入数据库,则writing data to a NVARCHAR2 column上的JDBC Developer’s GuIDe中有一个示例.如果您使用的是1.5 JVM,则必须对每个NVARCHAR2列使用OraclePreparedStatement.setFormOfUse调用.在1.6 JVM中,生活变得更容易,因为JDBC 4.0添加了NCHAR和NVARCHAR2类型.如果您使用的是1.5 JVM,那么使用像Spring这样的ORM框架来使用Oracle的JDBC扩展可能是一件非常重要的事情.我对Spring不熟悉,知道要实现这些步骤需要哪些步骤.

您可能可以修改连接字符串以指定defaultNChar = true.这将强制驱动程序使用国家字符集处理所有字符列.这可能足以解决您的问题,而不会让Spring使用OraclePreparedStatement扩展.

总结

以上是内存溢出为你收集整理的甲骨文,utf-8,NVARCHAR2,以及很多混乱全部内容,希望文章能够帮你解决甲骨文,utf-8,NVARCHAR2,以及很多混乱所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1250787.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存