PHP文件乱码主因是编码不统一,需确保文件保存为UTF-8无BOM、PHP输出头设为header('Content-Type: text/html; charset=utf-8')、HTML中声明,并检查数据库连接与缓存干扰。

PHP文件显示乱码,通常不是PHP本身的问题,而是编码格式不一致导致的——比如文件保存为UTF-8带BOM、浏览器未正确声明字符集、或PHP输出时未设置响应头。关键要统一“文件编码→PHP输出→HTML声明”三者为同一编码(推荐UTF-8无BOM)。
检查并统一PHP文件的保存编码
用编辑器(如VS Code、Notepad++、Sublime Text)打开PHP文件,查看右下角或状态栏显示的编码格式。常见问题:
- 文件实际是GBK/GB2312保存,但网页按UTF-8解析 → 显示乱码
- 文件是UTF-8带BOM保存 → PHP可能在输出前意外输出BOM字符,导致header已发送、JSON失败或页面头部空白
建议操作:在编辑器中将文件另存为“UTF-8 无BOM”格式。Notepad++可点击“编码 → 转为UTF-8无BOM”,VS Code可在右下角点击编码名称选择“Save with Encoding → UTF-8”。
在PHP中明确设置输出字符集
仅靠HTML meta标签不够可靠,尤其涉及AJAX、JSON或HTTP头控制时。应在PHP脚本开头添加:
立即学习“PHP免费学习笔记(深入)”;
header('Content-Type: text/html; charset=utf-8');
如果项目含中文输出、数据库查询结果或表单提交,还可补充:
- 连接MySQL时设置字符集:
mysqli_set_charset($conn, 'utf8mb4');或在PDO DSN中加;charset=utf8mb4 - 避免使用
mysql_*函数(已废弃),它们不支持utf8mb4
HTML页面中正确声明字符集
确保PHP生成的HTML包含标准的字符集声明,且放在内最顶部(越早越好):
不要写成杩欑被杩囨椂鍐欐硶銆傝嫢浣跨敤HTML5锛











