Java 連Mysql

问题遇到的现象和发生背景: Java 連Mysql亂碼
遇到的现象和发生背景,请写出第一个错误信息:沒有錯誤訊息。問題是存取中文時出現亂碼,例如在Java窗口輸入中文“不動產實用面積單位平方英尺(9位)”,然後保存,都沒發現問題,再從數據庫讀數據時,顯示“??????????????9??”
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%:我想相關代碼就是數據庫的存取,不會有問題。
运行结果及详细报错内容:見上述。
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%:應該是數據庫設置的問題吧。我使用的Mysql版本:5.1.7.2,default-character-set=utf8
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

需要确保以下几点:

1、数据库的字符集设置正确。在创建数据库时,应该使用UTF-8字符集,并且确保数据库的默认字符集也是UTF-8。可以使用以下命令创建数据库:

CREATE DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci;

2、在连接数据库时,确保使用UTF-8字符集。可以在连接字符串中添加 "characterEncoding=UTF-8" 参数来实现。例如:

jdbc:mysql://localhost:3306/database_name?characterEncoding=UTF-8

3、Java代码中,确保使用UTF-8编码。可以在读取或写入数据时使用InputStreamReader或OutputStreamWriter,并指定UTF-8编码。例如:

BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));

如果在进行上述设置后仍然出现亂码的情况,可以尝试打印出SQL语句,检查一下是否存在乱码。

你的java项目工程文件是什么编码?连接数据库的URL你是怎么写的?

建议你看下这篇实例【java连接mysql数据库乱码的解决方法】,里面详细分析了5种思路方法,链接:https://www.jb51.net/article/37054.htm

  1. 在MySQL的配置文件my.ini中,添加如下语句:
[client]
default-character-set=utf8

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

  1. 在java代码中添加参数:
java
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8";

我记得mysql 5.1版本在数据库url上指定编码是不好使的,所以需要在配置文件里加上这些指定字符为utf8,然后重启mysql服务

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

[mysqld]

default-character-set=utf8

首先,您需要确保数据库的字符集是 utf8,因为 utf8 可以支持中文字符。您可以在数据库的配置文件中设置 character-set-server=utf8,或者在创建数据库时使用 CREATE DATABASE database_name DEFAULT CHARACTER SET utf8。

其次,您需要确保 Java 程序连接数据库时使用的字符集是 utf8。您可以在连接字符串中设置 characterEncoding=utf8,例如:jdbc:mysql://localhost:3306/database_name?characterEncoding=utf8。

最后,您需要确保您的 Java 程序中的字符集是 utf8。您可以在程序中设置字符集,例如:

String sql = "INSERT INTO table_name (column_name) VALUES (?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "不動產實用面積單位平方英尺(9位)");
pstmt.execute Update();

最后,如果仍然无法解决问题,可以尝试调试代码,打印出 SQL 语句并检查是否正确,也可以在 MySQL 中执行相同的 SQL 语句,查看数据是否存储正确。

我知道,绝对解决。
一个是程序方面用utf8
另外是表用utf8
第三个至关重要数据库表的字符串属性必须要用utf8
三者绝对可以解决。
后面两个用mysqlworkbench可以傻瓜式选择
一搬是第三个问题,下载wotkbench选择utf8绝对可以解决,请采纳

连接上MySQL数据库后,使用以下命令检查一下数据库的字符集。

 show global variables like '%character%';

看是否存在字符集的默认值为 latin1 的情况,这种情况下存储的中文内容在读取的时候会乱码

重新设置下mysql编码,再次连接试试