jdbc-mysql 中文乱码解决

眉间皱痕 提交于 2020-02-13 19:12:05

在客户端或者JDBC连接时定制支持中文的编码格式(通常使用UTF-8),这样插入数据的时候,让mysql为自动为我们转码,可行的办法有两种:

1、如果是通过DriverManager.getConnection(url)编码方式操作JDBC,可以在JDBC的url中追加useUnicode=true&characterEncoding=UTF-8解决乱码问题

jdbc.url=jdbc:mysql://127.0.0.1:3306/mydb?useUnicode=true&characterEncoding=UTF-8

2、如果是通过其它数据源,比如DBCP、tomcat-jdbc、c3p0、spring-jdbc、hibernate读取配置文件,在url中追加useUnicode=true&characterEncoding=UTF-8是不起作用的,而是通过数据源自身的配置生效,比如下列配置:

<!-- Tomcat data source --> <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource">  <property name="driverClassName" value="${jdbc.driverClassName}" />  <property name="url" value="${jdbc.url}" />  <property name="username" value="${jdbc.username}" />  <property name="password" value="${jdbc.password}" />  <property name="dbProperties">    <props>        <prop key="useUnicode">yes</prop>        <prop key="characterEncoding">utf8</prop>    </props>  </property>  <!-- Configuration refer to optimizing connection performance -->  <property name="initialSize" value="10" />  <property name="maxActive" value="100" />  <property name="maxIdle" value="50" />  <property name="minIdle" value="10" />  <property name="suspectTimeout" value="60" />  <property name="timeBetweenEvictionRunsMillis" value="30000" />  <property name="minEvictableIdleTimeMillis" value="60000" />  <property name="testOnBorrow" value="true" />  <property name="validationQuery" value="SELECT 1" />  <property name="validationInterval" value="30000" />  <!-- End Configuration refer to optimizing connection performance --> </bean>

其中:

<props>      <prop key="useUnicode">yes</prop>      <prop key="characterEncoding">utf8</prop></props>

等价于url中的useUnicode=true&characterEncoding=UTF-8

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!