zoukankan      html  css  js  c++  java
  • java使用c3p0连接mysql,写中文数据乱码的问题

    此文说的乱码,是指所有中文的字符都变成了?。

    首先,网上普遍搜索到的解决方案都是告诉你要在数据库连接字符串里面增加编码的定义,完整的连接字符串如下:

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

    需要注意的是:这段字符串通常是保存在一段xml结构的配置文件中,比如环境变量文件context.xml中,更完整的配置内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <Context>
    <Resource name="sqldb"
    auth="Container"
    type="javax.sql.DataSource"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://127.0.0.1:3306/anydb?useUnicode=true&amp;characterEncoding=UTF-8"
    username="anyuser"
    password="anypassword"
    maxActive="50"
    maxIdle="10"
    maxWait="10000"/>

    </Context>

    于是问题来了,有的项目并不使用xml文件来配置数据库连接的,而是直接将配置写在文本文件中,比如config.properties,再由c3p0或dbcp的bean启动的时候去读取配置,这样一来,就不能用开头的那段字符串了,而需要修改成这样:

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

    仔细对比下,也就是把&amp;换成&,因为对&的转义只用在XML文件中,不恰当的转义会让编码定义失效,数据库操作中写入中文都变成???。

    一个小问题,花了我半天时间才找到原因,为了避免大家在此问题上白花功夫,特意记录下。希望对你有用!

  • 相关阅读:
    Java流关闭总结
    Too many open files 问题
    oracle数据库表被锁的解锁方法
    中文转换成字节数组
    java接口理解
    最小的K个数
    数组中出现次数超过一半的数字
    复杂链表的复制
    二叉树中和为某一值的路径
    二叉搜索树的后序遍历序列
  • 原文地址:https://www.cnblogs.com/cner/p/10716635.html
Copyright © 2011-2022 走看看