java sql编码_java中jdbc/sql出现编码问题

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column '???è??é“?è??' in 'field list' at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)at com.mysql.jdbc.Connection.execSQL(Connection.java:3277)at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1402)at ... 我其他地方以及传进SQL里面的参数的编码都没有问题,就是执行jdbc中的executeUpdate()方法执行sql插入数据时就出现这个问题。 比如: String book_name = request.getParameter("book_name");//中文显示正常 String sql = "insert into shopping_car(name,book_name) values("123",book_name)";//编码显示正常,为中文 stmt.executeUpdate(sql);//执行该方法的时候就出现上面的乱码错误, String sql = "insert into shopping_car(name,book_name) values(?,?)"; stmt.setString(1, "123"); stmt.setString(2, book_name);, 不建议这样使用 sql,因为容易发生 sql 注入,推荐使用另外种占位符的方式,或者是 orm,比如 mybatis,hibernate 等。 改正: String sql = "insert into shopping_car(name,book_name) values(\"123\","+book_name+")", 先发送一条指定字符集的sql指令 “set names utf8” ,再进行插入操作。 , 你数据库服务器字符集是啥?在数据库服务器执行以下命令查看一下字符集先: SHOW VARIABLES LIKE 'CHAR%'; 完了将客户端提交的数据的字符集设为和数据库服务器字符集一样..., 弄好了,原来在原始的jdbc操作中字符串一定要用单引号引起, 建议 MySQL 数据库服务端和客户端都使用UTF-8编码,MySQL 服务端编码和客户端连接URL如何设置,类似如下: url="jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8" 参考:JDBC url for MySQL configuration to use utf8 character encoding

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值