MySQL 数据库表中存储中文出现乱码通常是由于字符集设置不正确导致的。以下是解决这个问题的详细步骤:
常见的字符集包括:
utf8
:支持大部分 Unicode 字符。gbk
:支持简体中文。latin1
:支持西欧语言。确保 MySQL 数据库、表和字段的字符集都设置为 utf8
或 utf8mb4
。
-- 查看数据库字符集
SHOW CREATE DATABASE your_database_name;
-- 查看表字符集
SHOW CREATE TABLE your_table_name;
-- 查看字段字符集
SHOW FULL COLUMNS FROM your_table_name;
如果字符集不正确,可以通过以下命令修改:
-- 修改数据库字符集
ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 修改表字符集
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;
确保应用程序连接到数据库时使用的字符集也是 utf8
或 utf8mb4
。
在 PHP 中,可以通过以下方式设置:
$mysqli = new mysqli("localhost", "username", "password", "database");
$mysqli->set_charset("utf8mb4");
在 Python 中,可以使用 pymysql
或 mysql-connector-python
库:
import pymysql
conn = pymysql.connect(host='localhost', user='username', password='password', db='database', charset='utf8mb4')
确保你的源代码文件(如 PHP、Python 文件)也是以 UTF-8 编码保存的。
假设我们有一个简单的 PHP 应用程序,连接到 MySQL 数据库并插入中文数据:
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli->connect_error;
exit();
}
$mysqli->set_charset("utf8mb4");
$sql = "INSERT INTO your_table_name (your_column_name) VALUES (?)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s", $value);
$value = "你好,世界!";
$stmt->execute();
echo "Data inserted successfully!";
$stmt->close();
$mysqli->close();
?>
通过检查和设置数据库、表、字段以及连接的字符集,可以有效解决 MySQL 中存储中文乱码的问题。确保所有环节都使用一致的字符集,特别是 utf8mb4
,以支持完整的 Unicode 字符集。
领取专属 10元无门槛券
手把手带您无忧上云