在Java中连接MySQL数据库并保存中文时出现乱码,通常是由于字符编码不一致导致的。字符编码是指计算机如何表示和存储字符,常见的字符编码有UTF-8、GBK等。
在Java Web应用中,处理用户输入的中文数据并存储到MySQL数据库时,需要确保字符编码的一致性。
确保MySQL数据库和表的字符集设置为UTF-8:
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE mydb;
CREATE TABLE mytable (
id INT PRIMARY KEY,
name VARCHAR(255)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
在Java代码中连接MySQL时,指定连接字符集为UTF-8:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MySQLConnection {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydb?useUnicode=yes&characterEncoding=UTF-8";
String user = "username";
String password = "password";
try (Connection conn = DriverManager.getConnection(url, user, password)) {
System.out.println("Connected to the database!");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
确保JVM的默认字符集为UTF-8。可以在启动JVM时添加以下参数:
-Dfile.encoding=UTF-8
或者在操作系统的环境变量中设置:
export LANG=en_US.UTF-8
export LANGUAGE=en_US:en
export LC_ALL=en_US.UTF-8
通过以上步骤,可以有效解决Java保存中文到MySQL时出现乱码的问题。
领取专属 10元无门槛券
手把手带您无忧上云