MySQL插入中文乱码问题通常是由于字符集(Character Set)和校对规则(Collation)设置不正确导致的。字符集定义了数据库中存储的字符编码方式,而校对规则定义了字符之间的比较和排序规则。
插入中文乱码通常是由于以下原因之一:
在MySQL配置文件(通常是my.cnf
或my.ini
)中设置服务器字符集:
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
然后重启MySQL服务。
创建数据库时指定字符集:
CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
创建表时指定字符集:
CREATE TABLE mytable (
id INT PRIMARY KEY,
name VARCHAR(255)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
在连接数据库时指定字符集:
SET NAMES utf8mb4;
或者在连接字符串中指定:
import pymysql
conn = pymysql.connect(
host='localhost',
user='user',
password='password',
db='mydatabase',
charset='utf8mb4'
)
以下是一个Python示例,展示如何正确设置字符集并插入中文数据:
import pymysql
# 连接数据库
conn = pymysql.connect(
host='localhost',
user='user',
password='password',
db='mydatabase',
charset='utf8mb4'
)
# 创建游标
cursor = conn.cursor()
# 插入数据
sql = "INSERT INTO mytable (name) VALUES (%s)"
cursor.execute(sql, ('中文',))
# 提交事务
conn.commit()
# 关闭连接
cursor.close()
conn.close()
通过以上步骤,可以有效解决MySQL插入中文乱码的问题。
没有搜到相关的文章