bom头惹的祸!】的更多相关文章

今天使用json_decode函数解析json数据一直出错,最后发现j用浏览器开发者工具发现json数据前面多了个$#65279,查询得知是bom头; 网上找的去除bom头的代码如下: <?php header('content-Type: text/html; charset=utf-8'); if(isset($_GET['dir'])){ //设置文件目录,如果没有设置,则自动设置为当前文件所在目录 $basedir=$_GET['dir']; }else{ $basedir='.'; }…
thinkphp 验证码不现实多半是bom惹的祸,下面是驱除bom的代码: 链接:https://pan.baidu.com/s/1v5gm7n0L7TGyejCmQrMh2g 提取码:x2p5 免费分享,但是X度限制严重,如若链接失效点击链接或搜索加群 群号518475424. if (isset($_GET['dir'])){ //设置文件目录 $basedir=$_GET['dir']; }else{ $basedir = '.'; } $auto = 1; checkdir($based…
什么是bom头? 在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码,现在已经有很多软件识别bom头,但是还有些不能识别bom头,比如PHP就不能识别bom头,这也是用记事本编辑utf-8编码后执行就会出错的原因了. bom头有什么影响? 特别是在调试好后放到服务器上后,由于BOM头的原因导致图片输出显示不了,例如验证码图片.或者在页面上会出现空白条占据页面等影响网页的影响. 如何清除BOM头? 如下代码为PHP方式去除当前目录及子目录所有文件BOM信息的代码…
类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM).它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码.对于一般的文件,这样并不会产生什么麻烦.但对于 PHP来说,BOM是个大麻烦. PHP并不会忽略BOM,所以在读取.包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分.根据嵌入式语言的特点,这串字符将被直接执行(显示)出来.由此造成即使页面的 top padd…
原理: 找出文件前3个字符 如果它们对应的ASCII 值分别是  239,187,191 则判断为bom头,去掉前3个字符. 代码实现如下: $basedir = isset($_GET['dir']) ? $_GET['dir'] : "."; $auto = 1; $auto = isset($_GET['auto']) ? $_GET['auto'] : $auto; checkdir($basedir); function checkdir($basedir) { if ($d…
偶然发现 最近在公司日志平台 总是可以看到很多关于php curl的错误信息 Operation timed out after 0 milliseconds with 0 out of 0 bytes received Resolving timed out after 5514 milliseconds 非常奇怪,以前都是好的,使用wget获取也非常慢,从下面的结果可以看出来 dns解析比较慢 wget www.domain.com --2016-11-19 22:17:30--  http…
今天很是郁闷,写了一个php接口,返回的是标准的json字符串,但是调用的php 就是无法json_decode(),返回错误码为4,最后终于找到原因,原来是蒙一个文件中有bom头,最后采用一个命令 全部去掉bom头:find . -type f -exec sed -i 's/\xEF\xBB\xBF//' {} \;…
将下面文件放在网站根目录访问即可,它会遍历当前目录下所有子目录,检测文件是否含有BOM头,并删除BOM头 <?php //remove the utf-8 boms //by magicbug at gmail dot com set_time_limit(0); if (isset($_GET['dir'])){ //config the basedir $basedir=$_GET['dir']; }else{ $basedir = '.'; } $auto = 1; checkdir($b…
kindeditor多图片上传找不到action原来是private File upload成员变量惹得祸…
BOM是什么 Unicode的学名是"Universal Multiple-Octet Coded Character Set",简称为UCS.UCS可以看作是"Unicode Character Set"的缩写.在UCS 编码中有一个叫做 "Zero Width No-Break Space",中文译名作“零宽无间断间隔”的字符,它的编码是 FEFF.而 FFFE 在 UCS 中是不存在的字符,所以不应该出现在实际传输中.UCS 规范建议我们在…
查找包含BOM头的文件,命令如下:   grep -r -I -l $'^\xEF\xBB\xBF' ./   这条命令会查找当前目录及子目录下所有包含BOM头的文件,并把文件名在屏幕上输出.   但是,删除BOM头,网上找到的命令大多不能用,比较常见的命令是:   grep -r -I -l $'^\xEF\xBB\xBF' /path | xargs sed -i 's/^\xEF\xBB\xBF//;q' 但这条命令会把除了首行之外所有的行删除,所以毫无意义.   经测试如下命令是可行的:…
什么是BOM头? BOM头是放在UTF-8编码的文件的头部的,占用三个字节,用来标识该文件属于UTF-8编码.现在已经有很多软件识别BOM头,但是还有些不能识别BOM头,比如PHP就不能识别BOM头,这也是用记事本编辑UTF-8编码后执行就会出错的原因了. 如何去掉BOM头? 去掉BOM头的办法,最简单就是使用editplus或ultraedit等软件来操作.具体展示如下: 1.使用editplus去除BOM头 编辑器调整为UTF8编码格式后,保存的文件前面会多出一串隐藏的字符(也即是BOM),…
类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM).它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码.对于一般的文件,这样并不会产生什么麻烦.但对于 PHP来说,BOM是个大麻烦.   PHP并不会忽略BOM,所以在读取.包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分.根据嵌入式语言的特点,这串字符将被直接执行(显示)出来.由此造成即使页面的 top pa…
在我们使用VPN的时候,最讨厌的就是无故的断线了,可能正在和好基友一起副本,或者正在视频热聊中,还或者youtube视频看的正起劲,突然windows一个对话框弹出 - “连接已经断开”.实在是太影响体验了,断开之后,我们肯定会在心里咒骂VPN商家一翻,很多VPN商家其实也注意到了这个问题,做了很多的检修,甚至看遍了所有的日志,有时候也没有一个很好的解决方案.其实,今天我们要说的就是,VPN突然断线,有时候不是VPN商家的问题,而是我们的“猫”惹的祸! VPN在使用的过程中突然断开 我们很多家庭…
有时候我们的文件可能不需要BOM头,例如:我们公司的SVN服务器提供的代码都UTF8编码保存(不能有BOM头)否则代码提交不上去. 文件很多的时候就需要批量操作. 脚本使用方法:remove-bom.sh filePath|dirPath 参数可传文件路径或目录路径.具体代码如下: #!/usr/bin/env bash # @author frank # @email frank@mondol.info # @created 2016-09-01 # # Usage: remove-bom.s…
BOM头是UTF-8来告诉编辑器:我是UTF8编码.它的编码是\xEF\xBB\xBF 但是PHP在设计之初并没有考虑到BOM头的问题,所以在编解码的时候很容易出现问题   比如今天遇到的问题,json_decode,当解码的string有BOM头的时候json_decode就解析失败,返回NULL.(为什么不自动检测并去除BOM头呢...小吐槽) 试了两种方式能去除掉:   $result = trim($result, "\xEF\xBB\xBF"); print_r(json_d…
最近在做的一个网站发生了一个很诡异的BUG: 使用IE浏览页面时,一切都挺正常: 而使用Firefox浏览时,发现某些页面元素之间的距离比预期的要宽很多,HTML元素本身的hight.padding和margin值都很正常,只是元素之间像是增加了一个空行或一个类似于DIV的块级元素:用F12调出开发者工具查看后却没有发现任何多出的HTML元素或多余的代码; 再用Chrome进行查看,页面的显示效果和firefox一样,但是用F12查看后,发现确实是增加了多余的一行,表现为增加了一个空白字符串,但…
Linux下查找包含BOM头的文件和清除BOM头命令 2014-08-16 12:30:50 分类: 系统运维 查找包含BOM头的文件,命令如下: 点击(此处)折叠或打开 grep -r -I -l $'^\xEF\xBB\xBF' ./ \xef\xbb\xbf是UTF8 BOM的16进制表示   这个命令会把当前目录及所有子目录下的BOM头删除掉. 点击(此处)折叠或打开 find . -type f -exec sed -i 's/\xEF\xBB\xBF//' {} \; 另一种方法:…
批量清除BOM头 (2012-03-05 13:28:30) 转载▼ 标签: 杂谈   有些php文件由于不小心保存成了含bom头的格式而导致出现一系列的问题.以下是批量清除bom头的代码,复制代码,保存成.php文件,放在想执行的文件夹,运行就可以了 <?php if (isset ( $_GET ['dir'] )) { //config the basedir $basedir = $_GET ['dir']; } else { $basedir = '.'; } $auto = 1; c…
类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM).它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码.对于一般的文件,这样并不会产生什么麻烦.但对于 PHP来说,BOM是个大麻烦. 就是说在window下保存UTF8格式的文件是,window系统会向文件的首端插入三个字符,这就是bom头,一般的来说在别的程序也许bom头没有事,但是Php就不行. BOM: Byte O…
很久之前遇到过因为金山词霸和其他软件冲突导致的程序无响应的情况. 没想到今天情况重现,VS2013在可视化编辑NumbericUpDown控件的时候,又出现了”未响应“,发现又是有道词典惹的祸. 可见屏幕取词功能还是应该好好研究的,希望微软和有道之间能协调解决一下!!! 转自:http://blog.csdn.net/smstong/article/details/21018529…
首先弄清楚,什么是bom头?在Windows下用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte order Mark).不仅限于 记事本保存的文件,只要在文件的开口包含了EF BB BF 几个不可见的字符(十六进制应该是是xEFxBBxBF,用二进制编辑文件可见).这像是一个约定俗成的东西,当系统看到这玩意的时候,就会觉得你这个文件是UTF-8编码的. 如果你的接口是UTF-8的,你需要强制下载一个文件,…
今天在做采集的时候发现只取到了网页的部分内容,当时我就郁闷了,之前都用的采集都可以采集到网页的所有内容,但这次死活就取到部分内容.寻找原因才知道原来是iconv惹的祸. 发现问题时,网上搜了搜,才发现iconv原来有bug ,碰到一些生僻字就会无法转换,当然了配置第二个参数时,可以稍微弥补一下默认缺陷,不至于无法转换是截断,用法如下 iconv(“UTF-8″,”GB2312//IGNORE”,$data)  ; 这样碰到生僻字转换失败时,它就会忽略失败,继续转换下面的内容,这算解决问题的一个办…
2013-07-25 18:12:06 最近要用到windows的telnet功能,本来是很简单的事情,因为管理员权限的问题,花了不少时间,才发现是管理员权限惹的祸,更滑稽的是,自己一直以来都不是管理员,是普通用户,想到之前安装软件时,也有类似的问题,当时也还是花了好大力气的,好多如果载管理员账号下登陆,就能很简单的解决了. 下面是我在开启telnet服务时的艰辛历程,遇到的问题,以及解决方法,记录下来,方便自己以后查找,也方便遇到同样问题的朋友. 我的是win7 32 位旗舰版,可做参考.其他…
ie8 background css没有显示?——都是空格惹的祸…
最近有不少在微博上谈论BOM头问题,BOM头会造成页面展示的乱码,xml分析出现问题.而我恰巧遇到一种情况,在wml页面中如果加上BOM头,PC浏览器(IE,火狐)和手机浏览器(UC)都很正常,而如果去除BOM头,则手机端正常,PC端不正常.为此,对BOM头和编码做些简单的研究. 1.什么是BOM头 对于使用windows的记事本编辑文本,在采用UTF-8编码保存的时候,会给文本加上三个看不见的字节 0xEF 0xBB 0xBF,有些文章把这三个字节称为三个字符 是不对的,实际上这三个字节如果按…
做php开发,经常部分uft8的php文件因BOM头不同导致各种错误和错位.网上搜到的大部分所谓的去处bom工具都是2货,没有能用的.下面的一段代码,请复制到一个php文件里,然后上传到你的网站根目录下,然后前台访问,他会自动将站点下所有目录及子目录里的各种文件的bom干掉,会自动判断的哟. <?php // 设定你要清除BOM的根目录(会自动扫描所有子目录和文件)$HOME = dirname(__FILE__);// 如果是Windows系统,修改为:$WIN = 1;$WIN = 0;?>…
编码格式简介:ASCII码.ANSI.GBK.GB2312.GB18030和Unicode.UTF-8,BOM头 二进制: 只有0和1. 十进制.十六进制.八进制: 计算机其实挺笨的,它只认识0101这样的字符串(二进制),当然了我们看这样的01串时肯定会比较头晕的. 所以很多时候为了描述简单都用十进制,十六进制,八进制表示.实际上都是等价的,没啥太多不一样. 位(bit) 计算机中存储一个0,或者一个1的位置空间,叫做位. 字节(byte) 计算机中,我们把连续的8个位空间,叫做一个字节. A…
在psr开发标准中,有一条是讲的,php只能使用无bom的utf8格式 . 那么这个bom是几个意思.  说一些理论内容 . 在UCS编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF.而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中.UCS规范建议我们在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE".这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的:如果…
任意php文件,把最后一行替换成自己的目录 即可 <?php class KillBom {     public static $m_Ext = ['txt', 'php', 'js', 'css'];//检查的扩展名     /**      * 传入一个任意文件 ,自动区分定义的扩展名,然后过滤bom      * @param string $file      * @return boolean      */     public static  function killBomBy…