为什么控制台我输出乱码!!!!怎么解决
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();
}
}
}
}
--------------------编程问答-------------------- 控制台输出了:1 ????6677687 65
2 ? 7687 45
怎样让它正常显示呢??? --------------------编程问答-------------------- 你数据库用的是什么编码格式?
String url = "jdbc:mysql://localhost/?characterEncoding=utf8";
改成
String url = "jdbc:mysql://localhost/?useUnicode=true&characterEncoding=utf8";
试试 --------------------编程问答-------------------- 查看下你的表结构中表的编码。
工程的编码。
是否一致。 --------------------编程问答-------------------- 查下数据库编码,再看下项目编码。Mysql数据库编码问题很恼人的,你先看下数据库那边。如果数据库也 是乱码就把数据库的编码改改。 --------------------编程问答-------------------- 同意楼上的,用这句 show variables like '%char%';看一下数据库的编码,然后在mysql安装文件夹my.ini中改变编码。
另外,这是“UTF-8”的官方书写。 --------------------编程问答--------------------
就是两边编码要统一。 --------------------编程问答-------------------- 控制台居然能输出乱码? --------------------编程问答-------------------- 把url改为String url = "jdbc:mysql://localhost/?useUnicode=true&characterEncoding=utf8";
并且在创建数据库的时候可以先执行一下set names utf8; --------------------编程问答-------------------- 我觉得以后谁遇到这样的问题,最好是将文件直接保存为UTF-8,我觉得这是最传统的方法了。也是蛮实用的。 --------------------编程问答-------------------- 除 --------------------编程问答--------------------
改什么地方的 为什么我改的就不能运行mysql了
怎么改呢
--------------------编程问答--------------------
我的数据编码是这样的 --------------------编程问答--------------------
怎么样 什么问题也
--------------------编程问答--------------------
在my.ini文件中查看这两句default-character-set=latin1和character-set-server=latin1然后把latin1改成UTF-8。要是文件里没有,就把这两句加上去。然后重启下mysql服务器。
另外,你编码里的utf8全部按官方形式“UTF-8”写,要是还有什么问题,加我Q799229025,这个问题,我前两天刚好遇到过,有经验 --------------------编程问答--------------------
改了 mysql直接不能启动了 这又是怎么回事也 --------------------编程问答-------------------- 改MySQL编码,在重启动mySql服务 --------------------编程问答-------------------- mysql。一涉及到中文乱码问题我都哭了。深受其害啊。我现在可小心了,从建库到建表,到字段,全部手工指定编码集。 --------------------编程问答--------------------
需要重启服务器,步骤在百度搜一下。
我电脑上是,计算机-管理-服务-mysql --------------------编程问答-------------------- 一看就知道你mysql 数据库 傻瓜安装模式、
mysql默认是latin1的、拉丁文、 你得自己修改你想要的编码集、
修改my.ini文件、找到编码设置、修改成自己想要的编码、同14楼 操作、重启服务、
最好改完之后在看看table 的编码集、
一劳永逸的方法就是卸载mysql 重装、安装的时候修改默认编码集、
--------------------编程问答-------------------- 编码不一致啊。。。 --------------------编程问答-------------------- .java文件的编码是什么?
输出的乱码本应该是什么?
数据库编码是什么?
我以前经历过这样的,
.java 文件是utf-8,检索本地文件的文件名字是shift_jis编码,有部分文字在控制台乱码,但是我把信息
输出log的时候,log显示正常。 --------------------编程问答-------------------- 重新运行mysql配置程序,然后修改编码为utf-8 --------------------编程问答--------------------
“UTF-8这是官方形式。”这句话我说错了。如果编码全改成“UTF-8”,确实启动不了了(我试过了,狂汗!)
现在说一下解决方法:
在输入show variables like '%char%';这个命令之后,看这个character_set_system的编码,在你的mysql中显示是utf8,所以编码要改“utf8”而不是"UTF-8"。然后按14楼的操作。
对此,我深表抱歉。
怪只怪网上乱七八糟的东西,东看看,西看看,结果也不知道对不对就给记住了,回头下来试试才知道不对。 --------------------编程问答--------------------
我的错,改成utf8吧。
补充:Java , Web 开发