我正在从oracle11g中检索数据并在IE8和IE9浏览器上显示数据,但是无法显示一些特殊字符(例如é)
在我的网页中,我已明确声明'UTF-8'编码。
对于我的tomcat webserver,server.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true"/>
我在stackflow中读到了一些其他问题,他们提到也要确保数据库连接也使用'UTF-8'。
<Resource name="jdbc/AppDB"
auth="Container"
type="javax.sql.DataSource"
maxActive="20" maxIdle="10" maxWait="10000"
username="foo"
password="bar"
driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/ ID_development?useEncoding=true&characterEncoding=UTF-8"
/>
给出的解决方案是针对mysql的。 如果使用oracleDriver,我该如何设置编码?
<Resource name="jdbc/AppDB"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:ora11"
username="foo"
password="bar"
maxActive="20"
maxIdle="1000"
maxWait="-1" />
答案 0 :(得分:1)
请查看this answer。无论它专注于SQL Developer,它都包含有关调优JDBC驱动程序的信息,并指出如何正确处理Oracle中的unicode字符类型。
<强>更新强>
在客户端上显示字符的麻烦可能是由数据库客户端上的错误NLS_LANG
设置(在您的情况下为Tomcat)引起的。对于从java语言环境设置派生的瘦JDBC驱动程序NLS_LANG值
对于可能的变体,您可以查看this question上的答案并查看Oracle documentation
如果问题的真正根源在于Oracle数据库连接的字符集,那么只需要检查两个可能的端点:NLS_LANG
和oracle.jdbc.defaultNChar
。因此,您需要检查两者是否设置正确以确定发生了什么。