防止插入数据库时出现乱码,核心原则是:从客户端到数据库,整个链路的字符编码保持一致。下面按常见场景给你一套实操方案。
推荐:
utf8mb4(支持 emoji)utf8(MySQL 中只是部分 UTF-8)建库示例:
CREATE DATABASE test_db
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
建表示例:
CREATE TABLE user (
id INT PRIMARY KEY,
name VARCHAR(50)
) ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4;
MySQL 命令行
SET NAMES utf8mb4;
JDBC(Java)
jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=utf8mb4
Python(pymysql)
conn = pymysql.connect(
host='localhost',
user='root',
password='123456',
db='test_db',
charset='utf8mb4'
)
PHP(PDO)
new PDO(
"mysql:host=localhost;dbname=test_db;charset=utf8mb4",
$user, $pass
);
HTML
<meta charset="UTF-8">
Java
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
Python
# 文件开头
# -*- coding: utf-8 -*-
常见错误:
✅ 建议:
application/json; charset=UTF-8open("data.txt", encoding="utf-8")
如果已经乱码:
SHOW VARIABLES LIKE 'character%';
SHOW CREATE TABLE user;
SELECT @@character_set_client;
统一用 utf8mb4 + 连接指定编码 + 代码文件 UTF-8 = 不乱码
如果你用的是 具体技术栈(MySQL / Oracle / PostgreSQL / Java / Python / PHP),我可以给你更针对性的配置示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。