PHP去除BOM头的方法

BOM头是UTF-8来告诉编辑器:我是UTF8编码。它的编码是\xEF\xBB\xBF

但是PHP在设计之初并没有考虑到BOM头的问题,所以在编解码的时候很容易出现问题

比如今天遇到的问题,json_decode,当解码的string有BOM头的时候json_decode就解析失败,返回NULL。(为什么不自动检测并去除BOM头呢。。。小吐槽)

试了两种方式能去除掉:


1

2

3

$result = trim($result, "\xEF\xBB\xBF");

print_r(json_decode($result, true));

exit;

还有一种比较矬:


1

2

3

4

5

$result = @iconv("UTF-8", "GBK//IGNORE", $result);

$result = @iconv("GBK", "UTF-8//IGNORE", $result);

print_r(json_decode($result, true));

exit;

时间: 2024-12-16 23:56:53

PHP去除BOM头的方法的相关文章

php批量检测并去除BOM头的代码

开发中会遇到BOM头, 导致程序无法执行. 浏览器返回接口如下图: 去除BOM头解决方法:<?phpini_set('memory_limit','1024M'); function checkdir($basedir) {        if ($dh = opendir ( $basedir )) {            while ( ($file = readdir ( $dh )) !== false ) {                if ($file != '.' &&a

PHP批量去除bom头代码

最近遇到一个问题编码问题,有点让人头痛,百度的方法好像不太好用,所以我自己也找了很久,现在总结一个小方法去除utf-8bom的方法,页面总会出现 }else{ $basedir = '.'; } $auto = 1; checkdir($basedir); function checkdir($basedir){ if ($dh = opendir($basedir)) { while (($file = readdir($dh)) !== false) { if ($file != '.'

nootpad++去除bom头

用thinkcmf写的一个网站,上传到服务器后,出现顶部有一条高20px左右的空白,审查后发现有一串数字,就是bom头,解决方法: 一.用dw新建一个html或者php文件,覆盖掉想要去掉bom头的文件 二.下载nootpad++,新建一个文件,编码格式选utf-8 无bom头 格式,覆盖掉之前的文件即可,head,nav,footer,list页面都有可能产生bom头

PHP 下载文件时自动添加bom头的方法

首先弄清楚,什么是bom头?在Windows下用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte order Mark).不仅限于 记事本保存的文件,只要在文件的开口包含了EF BB BF 几个不可见的字符(十六进制应该是是xEFxBBxBF,用二进制编辑文件可见).这像是一个约定俗成的东西,当系统看到这玩意的时候,就会觉得你这个文件是UTF-8编码的. 如果你的接口是UTF-8的,你需要强制下载一个文件,

使用editplus等编程工具时UTF-8编码去掉BOM头方法(转载备查)

Unicode规范中有一个BOM的概念.BOM--Byte Order Mark,就是字节序标记.在这里找到一段关于BOM的说明: 在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF.而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中.UCS规范建议我们在传输字节流前,先传输 字符"ZERO WIDTH NO-BREAK SPACE".这样如果接收者收到FEFF,就表明这个字节流是Big-Endia

关于JSON解析的深坑之BOM头

    前言:在我们对Json字符串进行处理时,往往会碰到这个问题org.json.JSONException: Value of type java.lang.String cannot be converted to JSONObject,解析服务器返回的Json串时,JSONObject对象抛出了这个异常.其实这是返回的Json字符串含有BOM头导致的. 本人手拙,写的不好.望各位大虾见谅!!! 什么是JSON?  JSON(JavaScript Object Notation) 是一种轻

bom头的问题

JAXB将xml文件转化为java对象时出现了问题,用ue编写修改的xml文件加入了bom头,导致解析出现问题.但log4j解析带bom头的xml文件就不会有问题. 什么是bom头?在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码.现在已经有很多软件识别bom头,但是还有些不能识别bom头,比如PHP就不能识别bom头,这也是用记事本编辑utf-8编码后执行就会出错的原因了. 去掉bom头的办法,简单的是下面两种:1.editplus去BOM头的方法编辑器调

php工程部署在centos系统,产生页面布局错乱、点击按钮和链接无响应的解决办法(去BOM头)

1.UTF-8 BOM 可能导致CSS样式错乱: utf-8 是一种在web应用中经常使用的一种 unicode 字符的编码方式,使用 utf-8 的好处在于它是一种变长的编码方式,对于 ANSII 码编码长度为1个字节,这样的话在传输大量 ASCII 字符集的网页时,可以大量节约网络带宽. 使用 utf-8 编码来编写网页的时候, 往往会因为 bom (Byte Order Mark) 的问题,导致网页中经常出现一些不明的空行或者乱码字符. 这些都是因为 utf-8 编码方式对于 bom 不是

BOM头问题

最近有不少在微博上谈论BOM头问题,BOM头会造成页面展示的乱码,xml分析出现问题.而我恰巧遇到一种情况,在wml页面中如果加上BOM头,PC浏览器(IE,火狐)和手机浏览器(UC)都很正常,而如果去除BOM头,则手机端正常,PC端不正常.为此,对BOM头和编码做些简单的研究. 1.什么是BOM头 对于使用windows的记事本编辑文本,在采用UTF-8编码保存的时候,会给文本加上三个看不见的字节 0xEF 0xBB 0xBF,有些文章把这三个字节称为三个字符 是不对的,实际上这三个字节如果按