页面显示'?',而不是'é'

时间:2013-08-27 09:49:25

标签: oracle tomcat encoding utf-8

我正在从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&amp;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" />

1 个答案:

答案 0 :(得分:1)

请查看this answer。无论它专注于SQL Developer,它都包含有关调优JDBC驱动程序的信息,并指出如何正确处理Oracle中的unicode字符类型。

<强>更新
在客户端上显示字符的麻烦可能是由数据库客户端上的错误NLS_LANG设置(在您的情况下为Tomcat)引起的。对于从java语言环境设置派生的瘦JDBC驱动程序NLS_LANG值 对于可能的变体,您可以查看this question上的答案并查看Oracle documentation 如果问题的真正根源在于Oracle数据库连接的字符集,那么只需要检查两个可能的端点:NLS_LANGoracle.jdbc.defaultNChar。因此,您需要检查两者是否设置正确以确定发生了什么。