PHP文件乱码需统一为UTF-8无BOM编码,编辑器中转换并避免BOM;PHP脚本中添加header和meta声明UTF-8;数据库用utf8mb4;php.ini设default_charset="UTF-8";批量转换旧文件后需全面测试。

打开PHP文件时出现乱码,通常是因为文件编码与编辑器或服务器默认编码不一致。关键在于统一使用UTF-8(无BOM)编码,这是PHP项目最稳妥的选择。
用编辑器手动设置PHP文件编码
大多数代码编辑器(如VS Code、Sublime Text、Notepad++、PHPStorm)都支持修改文件编码:
- 在VS Code中:右下角点击当前编码(如“UTF-8”或“GBK”),选择“Reopen with Encoding” → “UTF-8”,再选“Save with Encoding” → “UTF-8”保存
- 在Notepad++中:菜单栏“编码”→“转为UTF-8无BOM格式”,然后保存
- 务必避免“UTF-8 with BOM”,PHP解析器可能因BOM头报错或输出空白行
在PHP文件开头声明字符集(辅助手段)
仅靠文件编码还不够,建议在PHP脚本中显式告知浏览器和服务器预期编码:
- 在HTML输出前加:header('Content-Type: text/html; charset=utf-8');
- 在HTML的内加:
- 若使用MySQL数据库,连接后执行:mysqli_set_charset($conn, 'utf8mb4');(推荐utf8mb4而非utf8,支持emoji等四字节字符)
配置PHP环境默认编码(可选但推荐)
确保PHP自身处理字符串时不默认用ISO-8859-1:
SDCMS-B2C商城网站管理系统是一个以php+MySQL进行开发的B2C商城网站源码。 本次更新如下: 【新增的功能】 1、模板引擎增加包含文件父路径过滤; 2、增加模板编辑保存功能过滤; 3、增加对统计代码参数的过滤 4、新增会员价设置(每个商品可以设置不同级不同价格) 5、将微信公众号授权提示页单独存放到data/wxtemp.php中,方便修改 【优化或修改】 1、修改了check_b
立即学习“PHP免费学习笔记(深入)”;
- 修改php.ini:设置default_charset = "UTF-8"
- 重启Web服务器(Apache/Nginx)使配置生效
- 可通过echo ini_get('default_charset');验证是否生效
检查并批量转换已有PHP文件编码
老项目常混杂GBK、ANSI等编码,可用工具批量清理:
- 命令行(Linux/macOS):iconv -f GBK -t UTF-8 input.php > output.php
- VS Code插件“Force Encoding”或“Encode Decode”可快速识别并转换多个文件
- 转换后务必测试页面输出、表单提交、数据库读写是否正常,尤其注意中文参数传递是否丢失










