MySQL插入中文出现乱码通常是由于字符集设置不正确导致的。字符集决定了数据库如何存储和显示文本数据。常见的字符集包括UTF-8、GBK等。
插入中文出现乱码的原因可能有以下几点:
以下是解决MySQL插入中文乱码的步骤:
-- 查看数据库字符集
SHOW CREATE DATABASE your_database_name;
-- 修改数据库字符集
ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 查看表字符集
SHOW CREATE TABLE your_table_name;
-- 修改表字符集
ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 修改列字符集
ALTER TABLE your_table_name MODIFY your_column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
在连接数据库时,确保连接字符集设置为UTF-8:
jdbc:mysql://localhost:3306/your_database_name?useUnicode=yes&characterEncoding=UTF-8
确保插入的数据文件本身编码为UTF-8。
以下是一个Java示例,展示如何设置连接字符集并插入中文数据:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class MySQLInsertExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/your_database_name?useUnicode=yes&characterEncoding=UTF-8";
String user = "your_username";
String password = "your_password";
try (Connection conn = DriverManager.getConnection(url, user, password)) {
String sql = "INSERT INTO your_table_name (your_column_name) VALUES (?)";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, "你好,世界!");
pstmt.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
通过以上步骤,可以有效解决MySQL插入中文出现乱码的问题。
领取专属 10元无门槛券
手把手带您无忧上云