WordPress站点DOCTYPE不显示及UTF-8 BOM(/ufeff)问题求助
解决WordPress中DOCTYPE丢失、页面空白及隐藏BOM字符问题
这个问题我之前帮好几个开发者处理过,根源非常明确——**UTF-8 BOM(字节顺序标记)**在搞鬼!你看到的/ufeff和其实都是BOM的不同表现形式:它是一个隐藏的字节序列,当文件以「UTF-8带BOM」编码保存时会被插入到文件开头,浏览器解析时会把它当成普通文本输出,不仅会挤掉你的<!DOCTYPE html>声明,还会在页面中产生莫名的空白。
下面是分步解决方案:
用Notepad++彻底移除BOM
你之前改UTF-8没解决问题,是因为Notepad++默认的「UTF-8」选项其实是带BOM的。正确操作:- 打开
header.php文件 - 顶部菜单选择「编码」→「转为UTF-8无BOM编码」
- 保存文件后刷新页面测试
注意:别只改header.php,还要检查主题的其他核心文件(比如functions.php、index.php),甚至插件的文件——任何带BOM的文件被WordPress加载时,都会把BOM输出到页面开头。
- 打开
用其他编辑器验证修复
如果Notepad++操作后仍有问题,可以换用Sublime Text或VS Code确认:- Sublime Text:打开文件后看右下角的编码标识,如果显示「UTF-8 with BOM」,点击它选择「UTF-8」保存
- VS Code:左下角点击编码标识,选择「通过编码保存」→「UTF-8」,同时在设置中开启「files.trimTrailingWhitespace」避免多余空白
排查主题/插件的输出钩子
有时候BOM不是来自header.php本身,而是通过wp_head这类钩子输出的:- 暂时切换到WordPress默认主题(比如Twenty Twenty-Three),如果问题消失,说明是当前主题的文件有问题
- 禁用所有插件,逐个启用排查,看是否是某个插件的文件带BOM导致的
服务器端缓冲设置(可选)
如果上述方法都无效,可以检查PHP配置中的output_buffering是否开启——开启输出缓冲可以避免提前输出BOM字符,但这只是临时 workaround,建议还是从文件编码根源解决。
内容的提问来源于stack exchange,提问作者subzero
相关产品推荐
相关产品推荐

