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文件中,不恰当的转义会让编码定义失效,数据库操作中写入中文都变成???。

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

  • 相关阅读:
    QPushbutton样式
    qt调动DLL
    QLabel设置行间距
    Qt 5.2.1 applications (32 bit) in CentOS (64 bit with gcc 4.8.2)
    qt设置阴影效果
    ubuntu命令
    How to configure NFS on Linux
    gsoap生成onvif c++源码
    QUrl乱码问题
    QTableWidget自适应标题(铺满、可调节)
  • 原文地址:https://www.cnblogs.com/cner/p/10716635.html
Copyright © 2011-2022 走看看