为什么控制台我输出乱码!!!!怎么解决

Android_CJJ 2012-11-16 01:12:38
import java.sql.*;

public class TestMysql {

public static void main(String[] args) throws Exception {
Connection conn = null;
Statement stmt = null;
ResultSet result = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost/?characterEncoding =utf8";

conn = DriverManager.getConnection(url, "root", "root");
stmt = conn.createStatement();
String creatDB = "CREATE DATABASE IF NOT EXISTS mydb DEFAULT CHARACTER SET=utf8";
stmt.execute(creatDB);
String droptable = "DROP TABLE IF EXISTS mydb.t_books";
String creatTable = "CREATE TABLE mydb.t_books(id int unsigned NOT NULL,"
+ "name varchar(50) NOT NULL,isbn varchar(20) NOT NULL,price int unsigned,"
+ "PRIMARY KEY(id)) ENGINE=InnoDB DEFAULT CHARSET utf8";
String inserData1 = "INSERT INTO mydb.t_books(id,name,isbn,price) values (1,'刚回家回家','677687',65)";
String inserData2 = "INSERT INTO mydb.t_books(id,name,isbn,price) values (2,'好','7687',45)";
stmt.execute(droptable);
stmt.execute(creatTable);
stmt.execute(inserData1);
stmt.execute(inserData2);
String select = "SELECT * FROM mydb.t_books";
result = stmt.executeQuery(select);
while (result.next()) {
System.out.print(result.getString("id") + " ");
System.out.print(result.getString("name")+ " ");
System.out.print(result.getString("isbn") + " ");
System.out.println(result.getString("price") + " ");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(result != null) {
result.close();
result = null;
}
if(result != null) {
stmt.close();
stmt = null;
}
if(result != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}

}

}
...全文
806 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
q917769032 2012-11-23
  • 打赏
  • 举报
回复
引用 15 楼 junjichen 的回复:
引用 14 楼 q917769032 的回复:引用 11 楼 junjichen 的回复: 引用 5 楼 q917769032 的回复:同意楼上的,用这句 show variables like '%char%';看一下数据库的编码,然后在mysql安装文件夹my.ini中改变编码。 另外,这是“UTF-8”的官方书写。 改什么地方的 为什么我改的就不能运行my……
我的错,改成utf8吧。
q917769032 2012-11-23
  • 打赏
  • 举报
回复
引用 13 楼 junjichen 的回复:
怎么样 什么问题也 引用 6 楼 q917769032 的回复:引用 5 楼 q917769032 的回复: 同意楼上的,用这句 show variables like '%char%';看一下数据库的编码,然后在mysql安装文件夹my.ini中改变编码。 另外,这是“UTF-8”的官方书写。 就是两边编码要统一。
“UTF-8这是官方形式。”这句话我说错了。如果编码全改成“UTF-8”,确实启动不了了(我试过了,狂汗!) 现在说一下解决方法: 在输入show variables like '%char%';这个命令之后,看这个character_set_system的编码,在你的mysql中显示是utf8,所以编码要改“utf8”而不是"UTF-8"。然后按14楼的操作。 对此,我深表抱歉。 怪只怪网上乱七八糟的东西,东看看,西看看,结果也不知道对不对就给记住了,回头下来试试才知道不对。
zz201206 2012-11-22
  • 打赏
  • 举报
回复
重新运行mysql配置程序,然后修改编码为utf-8
q917769032 2012-11-20
  • 打赏
  • 举报
回复
引用 15 楼 junjichen 的回复:
引用 14 楼 q917769032 的回复:引用 11 楼 junjichen 的回复: 引用 5 楼 q917769032 的回复:同意楼上的,用这句 show variables like '%char%';看一下数据库的编码,然后在mysql安装文件夹my.ini中改变编码。 另外,这是“UTF-8”的官方书写。 改什么地方的 为什么我改的就不能运行my……
需要重启服务器,步骤在百度搜一下。 我电脑上是,计算机-管理-服务-mysql
qq248199291 2012-11-20
  • 打赏
  • 举报
回复
.java文件的编码是什么? 输出的乱码本应该是什么? 数据库编码是什么? 我以前经历过这样的, .java 文件是utf-8,检索本地文件的文件名字是shift_jis编码,有部分文字在控制台乱码,但是我把信息 输出log的时候,log显示正常。
orangleliu 2012-11-20
  • 打赏
  • 举报
回复
编码不一致啊。。。
  • 打赏
  • 举报
回复
一看就知道你mysql 数据库 傻瓜安装模式、 mysql默认是latin1的、拉丁文、 你得自己修改你想要的编码集、 修改my.ini文件、找到编码设置、修改成自己想要的编码、同14楼 操作、重启服务、 最好改完之后在看看table 的编码集、 一劳永逸的方法就是卸载mysql 重装、安装的时候修改默认编码集、
softbing 2012-11-19
  • 打赏
  • 举报
回复
mysql。一涉及到中文乱码问题我都哭了。深受其害啊。我现在可小心了,从建库到建表,到字段,全部手工指定编码集。
静谧冬夜 2012-11-19
  • 打赏
  • 举报
回复
改MySQL编码,在重启动mySql服务
Android_CJJ 2012-11-19
  • 打赏
  • 举报
回复
引用 14 楼 q917769032 的回复:
引用 11 楼 junjichen 的回复: 引用 5 楼 q917769032 的回复:同意楼上的,用这句 show variables like '%char%';看一下数据库的编码,然后在mysql安装文件夹my.ini中改变编码。 另外,这是“UTF-8”的官方书写。 改什么地方的 为什么我改的就不能运行mysql了 怎么改呢 在my.ini文件中查看这两句default-c……
改了 mysql直接不能启动了 这又是怎么回事也
q917769032 2012-11-19
  • 打赏
  • 举报
回复
引用 11 楼 junjichen 的回复:
引用 5 楼 q917769032 的回复:同意楼上的,用这句 show variables like '%char%';看一下数据库的编码,然后在mysql安装文件夹my.ini中改变编码。 另外,这是“UTF-8”的官方书写。 改什么地方的 为什么我改的就不能运行mysql了 怎么改呢
在my.ini文件中查看这两句default-character-set=latin1和character-set-server=latin1然后把latin1改成UTF-8。要是文件里没有,就把这两句加上去。然后重启下mysql服务器。 另外,你编码里的utf8全部按官方形式“UTF-8”写,要是还有什么问题,加我Q799229025,这个问题,我前两天刚好遇到过,有经验
Android_CJJ 2012-11-17
  • 打赏
  • 举报
回复

怎么样 什么问题也

引用 6 楼 q917769032 的回复:
引用 5 楼 q917769032 的回复:
同意楼上的,用这句 show variables like '%char%';看一下数据库的编码,然后在mysql安装文件夹my.ini中改变编码。
另外,这是“UTF-8”的官方书写。

就是两边编码要统一。
Android_CJJ 2012-11-17
  • 打赏
  • 举报
回复
引用 6 楼 q917769032 的回复:
引用 5 楼 q917769032 的回复:
同意楼上的,用这句 show variables like '%char%';看一下数据库的编码,然后在mysql安装文件夹my.ini中改变编码。
另外,这是“UTF-8”的官方书写。

就是两边编码要统一。

我的数据编码是这样的
Android_CJJ 2012-11-17
  • 打赏
  • 举报
回复
引用 5 楼 q917769032 的回复:
同意楼上的,用这句 show variables like '%char%';看一下数据库的编码,然后在mysql安装文件夹my.ini中改变编码。 另外,这是“UTF-8”的官方书写。
改什么地方的 为什么我改的就不能运行mysql了 怎么改呢
jiangmeiwei 2012-11-16
  • 打赏
  • 举报
回复
我觉得以后谁遇到这样的问题,最好是将文件直接保存为UTF-8,我觉得这是最传统的方法了。也是蛮实用的。
zrdaiddm 2012-11-16
  • 打赏
  • 举报
回复
把url改为String url = "jdbc:mysql://localhost/?useUnicode=true&characterEncoding=utf8"; 并且在创建数据库的时候可以先执行一下set names utf8;
最美的词 2012-11-16
  • 打赏
  • 举报
回复
控制台居然能输出乱码?
q917769032 2012-11-16
  • 打赏
  • 举报
回复
引用 5 楼 q917769032 的回复:
同意楼上的,用这句 show variables like '%char%';看一下数据库的编码,然后在mysql安装文件夹my.ini中改变编码。 另外,这是“UTF-8”的官方书写。
就是两边编码要统一。
q917769032 2012-11-16
  • 打赏
  • 举报
回复
同意楼上的,用这句 show variables like '%char%';看一下数据库的编码,然后在mysql安装文件夹my.ini中改变编码。 另外,这是“UTF-8”的官方书写。
电商架构修炼 2012-11-16
  • 打赏
  • 举报
回复
查下数据库编码,再看下项目编码。Mysql数据库编码问题很恼人的,你先看下数据库那边。如果数据库也 是乱码就把数据库的编码改改。
加载更多回复(3)

81,090

社区成员

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

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