我们有一个使用UTF-8的Oracle DB(NLS_CHARACTERSET = AL32UTF8)。 然后我们在Glassfish中使用了一个使用Hibernate的J2EE应用程序。
使用SQL Plus或SQL Developer时,我们可以正确读取和写入数据,但我们无法以编程方式获取特殊字符。
阅读ä
我们得到√§
看着我尝试的类似问题:
调整Hibernate属性
<property name="hibernate.connection.characterEncoding" value="utf8" />
在Glassfish中添加defaultNChar=true
连接属性
通过Hibernate添加defaultNChar
连接属性
<property name="hibernate.connection.defaultNChar" value = "true"/>
将字符集设置为utf8
<property name="hibernate.connection.charSet" value="utf8" />
但是我仍然无法获得任何非基本ASCII的字符。
任何暗示我做错了什么?
编辑:使用get我的意思是使用select语句进行提取。使用调试器进行检查或使用断言与正确的(例如"ä"
)字符串进行比较。
答案 0 :(得分:1)
正如使用NVARCAR对原始问题的评论中所讨论的那样,添加到Hibernate配置文件的以下行似乎有效。
<property name="hibernate.connection.defaultNChar">true</property>
它为我做了。
答案 1 :(得分:0)
您没有从数据源声明中说出有关您的连接URL的任何信息。您是否尝试在连接网址上设置编码?
JDBC:MySQL的://本地主机:3306 / yourDB的了useUnicode =真安培;的characterEncoding = UTF-8 强>
我无法测试oracle,但是对于mysql,它解决了这个问题。
答案 2 :(得分:0)
正如评论中所述,我意识到问题没有意义,因为数据库连接实际上没有问题。正如meta-discussion中所建议的那样,我将其解释为答案。