扫盲 2026.09.29 04:57 68 次浏览 0 条评论

表单提交数据中文乱码

刚学PHP做表单,提交个“张三”,存进库里变成一堆问号或者“å¼ ä¸‰”,十有八九是编码没对齐。整条链路都得是UTF-8,缺一段都不行。

第一个坑是HTML页面。head里写上 ,表单加上 accept-charset="utf-8"。

第二个坑是PHP接收和输出。开头就header声明编码,不然页面自己先花掉。

第三个坑是数据库连接。很多人表建成了utf8mb4,连接时却忘了设,照样乱码。字段类型也用utf8mb4,小皮面板建库选 utf8mb4_general_ci。

<?php
header('Content-Type: text/html; charset=utf-8'); // 输出先定编码

$conn = new mysqli('localhost','root','123456','test');
$conn->set_charset('utf8mb4'); // 连接编码,这行最关键

$name = $_POST['name'] ?? '';
$stmt = $conn->prepare('insert into user(name) values(?)');
$stmt->bind_param('s', $name);
$stmt->execute();

echo $name; // 页面显示正常就说明通了
?>

另外老数据里已经存成问号的,改编码救不回来,直接删了重插。查的时候用客户端看,别只看网页,网页可能自己又转了一次。

说点什么 0

行思随记

欢迎来到:行思随记