java程序向mysql数据表插入数据时中文乱码问题

lyj_12345 2013-07-25 05:02:36
我是个初学者,各位高手帮帮忙。
java文件和数据库的字符集都是UTF-8,但是当我用java程序向MySQL数据库里的数据表插入数据时中文字符都变成问号了。网上都是说编码方式一样就没事了,可是我都换成GBK码也不行。这怎么解决?
...全文
8181 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
现实很丰满 2015-11-28
  • 打赏
  • 举报
回复
引用 3 楼 liuwei0604 的回复:
在数据库连接的后面也要加上utf-8 ,jdbc:mysql://127.0.0.1:3306/databaseName?characterEncoding=UTF-8
谢谢
lyj_12345 2013-07-25
  • 打赏
  • 举报
回复
加上这个就解决了。jdbc:mysql://127.0.0.1:3306/databaseName?useUnicode=true&characterEncoding=utf8 谢谢谢谢各位
lyj_12345 2013-07-25
  • 打赏
  • 举报
回复
【问题补充】附上代码和结果,麻烦各位高手指点一下
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class InsertData {

static Connection con;
public static Connection getConnection() { //建立返回值为Connection的方法
try {
Class.forName("com.mysql.jdbc.Driver"); //加载数据库驱动
System.out.println("数据库驱动加载成功");
con = DriverManager
.getConnection(
"jdbc:mysql://localhost:3306/db_test1",
"root", ""); // 获取数据库连接
if (con != null) {
System.out.println("数据库连接成功");
}
} catch (Exception e) {
e.printStackTrace();
}
return con; //按方法要求返回个Connection对象
}

/**
* @param args
*/
public static void main(String[] args) {
con = getConnection(); // 调用数据库连接方法
Statement statement;
try {
statement = con.createStatement(); // 获取Statement对象
for(int i=0;i<3;i++){
statement.execute("insert into tb_student(name,sex,age,salary)values('小红','女',24,5000)"); // 执行添加数据操作
}

System.out.println("student表的所有记录:");
ResultSet res=statement.executeQuery("select * from tb_student"); //查询所有记录
while(res.next()){
int id=res.getInt("id");
String name=res.getString("name");
String sex=res.getString("sex");
int age=res.getInt("age");
int salary=res.getInt("salary");
System.out.println("id:"+id+"\t姓名:"+name+"\t性别:"+sex+"\t\t年龄:"+age+"\t\t工资:"+salary);
}
//关闭连接
res.close();
statement.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}

}

}
「已注销」 2013-07-25
  • 打赏
  • 举报
回复
首先,在发往数据库保存的最后一层进行一下输出,如果在发往数据库之前就已经是乱码了,那就和MySql没有关系,专注处理你的代码就好了。 如果发往之前没有乱码,也就是在保存的时候出的问题,就得确定你发往数据库的数据的编码方式,建议先用String和Byte进行下转化,然后再发往数据库,两端编码一直即可。按照我的习惯的话,我喜欢都用utf-8
liuwei0604 2013-07-25
  • 打赏
  • 举报
回复
在数据库连接的后面也要加上utf-8 ,jdbc:mysql://127.0.0.1:3306/databaseName?characterEncoding=UTF-8
S117 2013-07-25
  • 打赏
  • 举报
回复
确定下乱码是发生在程序端,还是在数据库端!
saber872138 2013-07-25
  • 打赏
  • 举报
回复
pps.setBinaryStream(9, new ByteArrayInputStream(string.getBytes("utf-8"))); 这样写试试

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧