php utf-8 bom头ufeff引发的问题

php utf-8 bom头ufeff引发的问题

php utf-8 bom头ufeff引发的问题

今天在使用php的file_get_content读取文本的时候发现,文本头部有未知的字符,我写文本的时候没有加这个字符,怎么回事呢

php utf-8 bom头ufeff引发的问题

网上查了一下,这就是utf-8 bom头信息,通常使用windows记事本保存文本为utf-8格式的时候,记事本会默认加入bom头

一、那什么是bom头呢

BOM是Byte Order Mark的缩写,即字节顺序标记,它是插入到UTF-8,UTF-16或UTF-32编码的Unicode文件开头的特殊标记,用来标识Unicode文件的编码类型。

php utf-8 bom头ufeff引发的问题

这种bom头对于html代码和php代码有点影响,特别是php代码在输出图片的时候,经常会出现无法显示图片的问题,因为输出图片的头部有bom头,导致图片无法显示

二、怎么去掉bom头呢

第一种:php代码头部字符过滤

<?php
$txtstr = file_get_contents('bfwdemo.txt');
if (strpos($txtstr, "\xEF\xBB\xBF") === 0) {
    //\x表示16进制
    $txtstr = substr($txtstr, 3);
}
echo $txtstr;
?>

第二种:将文件在本地编辑器editplus中打开另存为

php utf-8 bom头ufeff引发的问题



{{collectdata}}

网友评论0