MySQL中文乱码解决办法
乱码就一个根源:库、表、连接三处的字符集不统一。先查现状:
SHOW VARIABLES LIKE 'character%';
-- 看 client、connection、results、database、server 是否都是 utf8mb4
在小皮面板里进入软件管理,找到 MySQL,点击配置修改,在 my.ini 里加上下面几行,保存后重启 MySQL:
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
[client]
default-character-set=utf8mb4
建库建表时不要用默认值,PHP 连接时必须指定 charset:
CREATE DATABASE test DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8mb4','root','123456');
$mysqli->set_charset('utf8mb4'); // mysqli 写法
老表要转字符集,执行 ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4; 页面也声明 utf-8。三处统一后,乱码基本就没了。
标签:MySQL,字符集,PHP
说点什么 0