1、项目环境:
JavaWeb项目,字符集UTF-8,框架Spring、SpringMVC、Hibernate、JPA、SpringData、Shrio;
连接数据库使用阿里巴巴的Druid连接池;
数据库Oracle11g,字符集US7ASCII;
2、数据库驱动:
数据库驱动是解决这个问题的关键,一开始使用的不是这个驱动,所以导致无法转码
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
<scope>test</scope>
</dependency>
3、数据源配置:
配置数据源的时候主要配置数据库驱动类、oracle瘦连接以及连接配置,其中最后一项根据需要设置不同的字符编码
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
......
<property name="url" value="${jdbc.url}"/>
......
<property name="connectionProperties" value="${druid.connectionProperties}"/>
</bean>
-----------------------------------------------------------------------------------
jdbc.driver = com.alibaba.druid.proxy.DruidDriver
......
jdbc.url = jdbc:wrap-jdbc:filters=encoding:jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST=xxx)(PORT=xxx))) (CONNECT_DATA=(SERVICE_NAME=xxx)))
......
druid.connectionProperties = serverEncoding=iso-8859-1;clientEncoding=GBK;defaultRowPrefetch=50;bigStringTryClob=true