解决 PHP 转换编码带 BOM 的问题

24次阅读
2024年08月01日 15:02:26

共计 518 个字符,预计需要花费 2 分钟才能阅读完成。

之前在优化网站的时候,修改网页保存之后就会遇到这个问题,其实就是 PHP 在转换文件编码时,如果遇到带有 BOM 头的话,会导致其它应用读取到的内容出现乱码,需要做单独的处理。

$content = file_get_contents('in.txt');

$encode = mb_detect_encoding($content, ['ASCII', 'GBK', 'GB2312', 'BIG5', 'UTF-8']);
if ($encode !== 'UTF-8') {
    $content = iconv($encode, 'UTF-8', $content);
}

// Check if has bom
$bom = pack("CCC", 0xef, 0xbb, 0xbf);
if (strncmp($content, $bom, 3) === 0) {
    $content = substr($content, 3);
}

file_put_contents('out.txt', $content);

在 Linux 下检测文件是否带 BOM 可以使用命令 hexdump -C in.txt,如果最开始出现 ef bb bf 的话,就是 UTF-8 with BOM 的编码。

00000000  ef bb bf 31 31 31                                 |...111|
00000006
正文完
 0
鹿泽
版权声明:本站原创文章,本文由 鹿泽 于 2024年8月1日 15:02:26 发表,共计 518 字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
本站所有文章,如无特殊说明或标注,均为本站原创发布。任何在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。
如若本站内容侵犯了原著者的合法权益,可联系我们邮箱:526009505@qq.com进行处理。
最新文章
WordPress SEO 优化之标签优化技巧

WordPress SEO 优化之标签优化技巧

今天我们来说一下 WordPress 文章标签优化的事情。在很多 WordPress SEO 优化教程中,都会...
WordPress SEO 之站外链接建设方法和技巧

WordPress SEO 之站外链接建设方法和技巧

站外链接(简称外链)是 WordPress SEO 过程中必不可少的一项工作,怎么做外链,从哪些方面着手,很多...
一次性删除WordPress文章所有评论的方法

一次性删除WordPress文章所有评论的方法

不少小伙伴在建设WordPress站点的时候都会开启文章评论等,作为网站良好的一个互动。但是这也给了很多垃圾评...
WordPress前台显示登录用户注册时间的方法

WordPress前台显示登录用户注册时间的方法

正常WordPress前台和后台都不会显示用户的注册时间,有时需要在前台显示登录用户的注册时间,可以用下面的代...
WordPress加个评论关闭时间提示的方法

WordPress加个评论关闭时间提示的方法

为了阻止垃圾评论,我们可以进入WP后台 → 设置 → 讨论,在讨论设置面勾选“自动关闭发布 14天后的文章上的...