之前在优化网站的时候,修改网页保存之后就会遇到这个问题,其实就是 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
1、文章版权归作者所有,未经允许请勿转载。
2、本站所有文章,如无特殊说明或标注,均为本站原创发布。任何在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们邮箱:526009505@qq.com进行处理。
3、咨询请联系QQ:526009505
2、本站所有文章,如无特殊说明或标注,均为本站原创发布。任何在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们邮箱:526009505@qq.com进行处理。
3、咨询请联系QQ:526009505
你可能也喜欢
- ♥ 隐藏PHP/Nginx版本信息的方法06/17
- ♥ 笔记学习:PHP date()、strtotime()函数05/06
- ♥ php获取当前url地址的方法07/04
- ♥ php初级教程:echo、priint、print_r输出方式09/03
- ♥ PHP常用的正则匹配函数06/13
- ♥ 使用PHP将长文章分页的方法09/03