当前位置:编程学习 > JAVA >>

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

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


就是两边编码要统一。 --------------------编程问答-------------------- 控制台居然能输出乱码? --------------------编程问答-------------------- 把url改为String url = "jdbc:mysql://localhost/?useUnicode=true&characterEncoding=utf8";
并且在创建数据库的时候可以先执行一下set names utf8; --------------------编程问答-------------------- 我觉得以后谁遇到这样的问题,最好是将文件直接保存为UTF-8,我觉得这是最传统的方法了。也是蛮实用的。 --------------------编程问答-------------------- 除 --------------------编程问答--------------------
引用 5 楼 q917769032 的回复:
同意楼上的,用这句 show variables like '%char%';看一下数据库的编码,然后在mysql安装文件夹my.ini中改变编码。
另外,这是“UTF-8”的官方书写。


改什么地方的 为什么我改的就不能运行mysql了
怎么改呢
--------------------编程问答--------------------
引用 6 楼 q917769032 的回复:
引用 5 楼 q917769032 的回复:
同意楼上的,用这句 show variables like '%char%';看一下数据库的编码,然后在mysql安装文件夹my.ini中改变编码。
另外,这是“UTF-8”的官方书写。

就是两边编码要统一。

我的数据编码是这样的 --------------------编程问答--------------------
怎么样 什么问题也

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

就是两边编码要统一。
--------------------编程问答--------------------
引用 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,这个问题,我前两天刚好遇到过,有经验 --------------------编程问答--------------------
引用 14 楼 q917769032 的回复:
引用 11 楼 junjichen 的回复:
引用 5 楼 q917769032 的回复:同意楼上的,用这句 show variables like '%char%';看一下数据库的编码,然后在mysql安装文件夹my.ini中改变编码。
另外,这是“UTF-8”的官方书写。

改什么地方的 为什么我改的就不能运行mysql了
怎么改呢
在my.ini文件中查看这两句default-c……



改了 mysql直接不能启动了  这又是怎么回事也  --------------------编程问答-------------------- 改MySQL编码,在重启动mySql服务 --------------------编程问答-------------------- mysql。一涉及到中文乱码问题我都哭了。深受其害啊。我现在可小心了,从建库到建表,到字段,全部手工指定编码集。 --------------------编程问答--------------------
引用 15 楼 junjichen 的回复:
引用 14 楼 q917769032 的回复:引用 11 楼 junjichen 的回复:
引用 5 楼 q917769032 的回复:同意楼上的,用这句 show variables like '%char%';看一下数据库的编码,然后在mysql安装文件夹my.ini中改变编码。
另外,这是“UTF-8”的官方书写。

改什么地方的 为什么我改的就不能运行my……

需要重启服务器,步骤在百度搜一下。
我电脑上是,计算机-管理-服务-mysql --------------------编程问答-------------------- 一看就知道你mysql 数据库 傻瓜安装模式、

mysql默认是latin1的、拉丁文、 你得自己修改你想要的编码集、

修改my.ini文件、找到编码设置、修改成自己想要的编码、同14楼 操作、重启服务、

最好改完之后在看看table 的编码集、

一劳永逸的方法就是卸载mysql 重装、安装的时候修改默认编码集、

--------------------编程问答-------------------- 编码不一致啊。。。 --------------------编程问答-------------------- .java文件的编码是什么?

输出的乱码本应该是什么?

数据库编码是什么?

我以前经历过这样的,

.java 文件是utf-8,检索本地文件的文件名字是shift_jis编码,有部分文字在控制台乱码,但是我把信息

输出log的时候,log显示正常。 --------------------编程问答-------------------- 重新运行mysql配置程序,然后修改编码为utf-8 --------------------编程问答--------------------
引用 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楼的操作。

对此,我深表抱歉。
怪只怪网上乱七八糟的东西,东看看,西看看,结果也不知道对不对就给记住了,回头下来试试才知道不对。 --------------------编程问答--------------------
引用 15 楼 junjichen 的回复:
引用 14 楼 q917769032 的回复:引用 11 楼 junjichen 的回复:
引用 5 楼 q917769032 的回复:同意楼上的,用这句 show variables like '%char%';看一下数据库的编码,然后在mysql安装文件夹my.ini中改变编码。
另外,这是“UTF-8”的官方书写。

改什么地方的 为什么我改的就不能运行my……


我的错,改成utf8吧。
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,