扫盲 2026.10.31 00:07 18 次浏览 0 条评论

MySQL中文乱码解决办法

中文乱码基本都是字符集没对上,连接、数据库、表、字段这四层里,只要有一层还是latin1就会出问题。

先查现状,别急着动手:

SHOW VARIABLES LIKE 'character%';  -- 看服务端和连接到底用的啥字符集
SHOW CREATE TABLE users;           -- 看表本身默认字符集

建库建表直接写死utf8mb4,别用utf8,那是阉割版,存不了emoji。

CREATE DATABASE demo DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

-- 已有老表连字段一起转过来
ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

-- 连上库先执行这句,让客户端和服务端说同一种话
SET NAMES utf8mb4;

PHP连接时在DSN里带上charset最省事:

// 不加charset,中文存进去就是一堆问号
$pdo = new PDO('mysql:host=127.0.0.1;dbname=demo;charset=utf8mb4', 'root', '123456');

小皮面板里打开my.ini,把character-set-server改成utf8mb4,保存后重启MySQL。网页那头的header和表单也统一按utf-8来,缺一头照样乱。

说点什么 0

行思随记

欢迎来到:行思随记