PHP文件乱码需统一保存与识别编码为UTF-8:手动重载并保存为UTF-8(去BOM),全局设置"files.encoding":"utf8"、关闭autoGuessEncoding,PHP脚本需header声明、无BOM,数据库连接显式设utf8mb4。

PHP文件默认编码不是UTF-8时会乱码
VS Code 默认用系统区域设置推断文件编码,Windows 中常 fallback 到 GBK 或 GB2312,而 PHP 源码(尤其含中文注释、字符串)若实际保存为 UTF-8 却被误读为 GBK,就会显示方块或问号。关键不是“怎么改显示”,而是确保「保存编码」和「编辑器识别编码」一致为 UTF-8。
手动重载并保存为UTF-8
适用于已打开但显示乱码的单个 PHP 文件:
- 点击右下角状态栏的编码标识(如
GBK、UTF-8 with BOM或未标记) - 选择
Reopen with Encoding→UTF-8(确认内容可读) - 再点同一位置,选
Save with Encoding→UTF-8(去掉勾选UTF-8 with BOM) - 务必关闭并重新打开文件验证——BOM 在 PHP 中可能触发
Headers already sent错误
全局设置默认PHP文件编码
避免每次新建/打开都手动切编码,需修改 VS Code 用户设置:
{
"files.encoding": "utf8",
"files.autoGuessEncoding": false,
"[php]": {
"files.encoding": "utf8"
}
}
说明:
立即学习“PHP免费学习笔记(深入)”;
-
"files.encoding": "utf8"设全局默认保存编码(注意值是utf8字符串,不是UTF-8) -
"files.autoGuessEncoding": false关闭自动猜测——它常猜错,尤其对无 BOM 的老 PHP 文件 -
"[php]"块确保 PHP 文件优先服从utf8,覆盖全局设置(VS Code 设置中语言专属配置优先级更高)
检查PHP运行时是否输出UTF-8
编辑器编码设对了,不代表网页不乱码。PHP 脚本自身也要声明字符集:
- 在 HTML 输出前加
header('Content-Type: text/html; charset=utf-8'); - PHP 文件开头若有
,确保其前**没有空格、BOM、UTF-8签名字节**(可用十六进制编辑器验证) - 数据库连接需显式设 charset:
mysqli_set_charset($conn, 'utf8mb4')或 PDO DSN 加;charset=utf8mb4
编辑器里看着正常,浏览器里还是乱码?八成是 PHP 输出头或 DB 连接没对齐 UTF-8 —— 编码问题从来不是单点问题。











