MySQL 数据库写入数据出现乱码通常是由于字符集设置不正确导致的。以下是关于这个问题的基础概念、原因分析、解决方案以及一些相关的应用场景和优势。
确保数据库、表和字段的字符集一致,通常推荐使用 utf8mb4
,因为它支持更多的 Unicode 字符,包括 emoji。
-- 查看数据库字符集
SHOW CREATE DATABASE your_database_name;
-- 查看表字符集
SHOW CREATE TABLE 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;
在连接数据库时指定正确的字符集。
import pymysql
conn = pymysql.connect(
host='your_host',
user='your_user',
password='your_password',
db='your_database',
charset='utf8mb4'
)
确保你的源代码文件(如 .py
或 .php
文件)使用 UTF-8 编码保存。
utf8mb4
可以提高数据的兼容性和可移植性。假设你有一个 Python 应用程序连接到 MySQL 数据库并插入数据:
import pymysql
# 连接数据库
conn = pymysql.connect(
host='localhost',
user='root',
password='your_password',
db='test_db',
charset='utf8mb4'
)
try:
with conn.cursor() as cursor:
sql = "INSERT INTO `users` (`name`, `email`) VALUES (%s, %s)"
cursor.execute(sql, ('张三', 'zhangsan@example.com'))
conn.commit()
finally:
conn.close()
通过上述步骤和代码示例,可以有效解决 MySQL 数据库写入乱码的问题。确保所有相关的字符集设置一致是关键。
领取专属 10元无门槛券
手把手带您无忧上云