展开

关键词

PHP Bom头导致乱码或者其他错误

到了测试环境服务器之后,各种问题一个又一个浮现,先是后台验证码不显示,以为是session写入失败,又是怀疑gd库,又是觉得服务器gd路径错误,又排查目录权限,各种方法试之无效,百度必应各种搜索,整个公司一半以上PHP -32才加上的BOM,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行这些大部分是编辑器的问题,PHP文件采用UTF- 8编码,PHP开发大部分使用的文本编辑软件如:Zend studio、editplus、eclipse等等都可以显示并编辑UTF-8编码的文件,但是也有一些软件不能满足这个要求.类似如windows的记事本 ,这样并不会产生什么麻烦.但对于 PHP来说,BOM是个大麻烦.对于BOM,PHP并不会忽略,在读取、包含或者引用这些文件时,PHP会把BOM作为文件开头正文的一部分,根据嵌入式语言的特点,这串字符将被直接执行 );另外还有的问题就是,受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效.一切依赖COOKIE

23320

什么是BOM头(字节顺序标记(ByteOrderMark))

在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码,现在已经有很多软件识别bom头,但是还有些不能识别bom头,比如PHP就不能识别bom头,这也是用记事本编辑utf 其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出 但对于 PHP来说,BOM是个大麻烦。PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。 受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。 运行Editplus,点击工具,选择首选项,选中文件,UTF-8标识选择 总是删除签名,然后对PHP文件编辑和保存后的PHP文件就是不带BOM的了。

71210
  • 广告
    关闭

    最壕十一月,敢写就有奖

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    UTF—8与UTF—8(无bom)格式相比有什么不同

    因此字符ZERO WIDTH NO-BREAK SPACE又被称作BOM。 UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。 在Firefox早期的版本里,扩展是不能有BOM的,不过Firefox 1.5以后的版本已经开始支持BOM了。现在又发现,PHP也不支持BOMPHP在设计时就没有考虑BOM的问题,也就是说他不会忽略UTF-8编码的文件开头BOM的那三个字符。 由于必须在在Bo-Blog的wiki看到,同样使用PHP的Bo-Blog也一样受到BOM的困扰。 其中有提到另一个麻烦:“受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。 如果包含中文字符的话,可以用UE的另存为功能,选择“UTF-8 无 BOM”即可。 --------------------- PHP代码不支持BOM头。

    2.5K31

    PHP编程」PHP中的这些坑,PHP开发常见填坑备注

    在日常开发中,我们经常碰到这样的问题,即有些PHP问题看似简单,一说就明,但是一到使用时就踩坑。 2、由于BOM头,使用PHP函数json_decode解析json字符串,不能解析成功。原因:UTF-8 编码的文件可以分为无 BOMBOM 两种格式。何谓BOM? EF BB BF 这三个字节就叫BOMBOM的全称叫做Byte Order Mard。 在utf-8文件中常用BOM来表明这个文件是UTF-8文件,而BOM的本意实在utf16中用来表示高低字节序列的。 如果文件保 存时,选择了使用 BOM,会使页面显示不正常。一般来说,php是不支持有BOM的,php文件应该保存为UTF-8无BOM类型,所以在保存 UTF8 编码PHP文件时,不要使用 BOM

    28120

    php写入txt乱码的解决方法

    相信很多人在使用PHP的过程中都遇到过生成文件乱码的情况,不论是使用fwrite还是file_put_contents写入。 就是缺少头部BOM(当然,这里指的肯定不是Js的Bom)。BOM既然提到了BOM,那么可能有的同学不太了解这个家伙,这里我简单说一下,老鸟可以跳过。 这就是为什么当文件没有BOM时,你给用户呈现的文件就可能是乱码的原因了。PS : 其实你可以将BOM理解成HTML中的charset属性和XML中的encoding属性,就是起一个标识作用。 解决办法:那么如何在PHP中输出BOM呢? ($file, chr(0xEF).chr(0xBB).chr(0xBF)); file_put_contents($file, chr(0xEF).chr(0xBB).chr(0xBF));以上就是php

    24621

    关于Bom头的一些坑

    最近在使用php的file_get_contents去掉用第三方接口的,神奇的发现返回来的json数据无法json_decode的,不管用var_dump,echo,print_r输出看起来都没有一点问题 上网查了一下,发现这是bom头,至于什么是什么是bom头? 在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码,现在已经有很多软件识别bom头,但是还有些不能识别bom头,比如PHP就不能识别bom头,这也是用记事本编辑utf

    524120

    导致页面顶部空白一行解决方法

    原因是页面的编码是UTF-8 + BOM。 这种编码方式一般会在windows操作系统中出现,比如WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM 但对于 PHP来说,BOM是个大麻烦。因为PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。 遇到这种问题的解决方法就是用Editplus 2.12版本以上编辑器或者 EmEditor或者 UltraEdit(需要取消‘添加BOM’的相关选项)或者 Dreamweaver(需要取消‘添加BOM

    28330

    php伪静态验证码不显示的解决方案

    确保php环境能用,php文件能被正常服务器软件解析,也可以找到php.exe或者php-cgi.exe执行下,php配置没问题的话就是跳出一个cmd窗口且不会自动关闭,然后有一个光标一直在闪烁。? 特别是utf-8的项目,很多新手习惯使用了windows自带的记事本对网站一些配置文件进行修改保存,这样配置文件的编码也随之变化了,一般是由无bom的utf-8变成了utf-8。 可以说记事本跟utf-8的php项目来说简直就是噩梦啊,也是新手比较常犯的一个低级失误了。? 使用notepad++或其他编辑软件对配置文件(也有可能是别的文件,自己核对下那些文件是被记事本修改过的)进行编码转换,将PHP文件编码重新修改为无bom的utf-8编码格式,点击保存下,大功告成。 据说那些编程高手都是一个记事本就能写一套系统的,那他们是怎么解决这个无bom的utf-8编码格式的问题的。??

    29831

    解释BOM头和去掉方法

    类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。 但对于 PHP来说,BOM是个大麻烦。  PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。 =================================================================window编辑器如果保存为utf8文件就会帮但是在网页上并不需要添加BOM 这样网页上就需要去除0xEF 0xBB 0xBF,可以使用editplus 选择不带BOM的编码,这样就可以去除了

    12520

    PHP读取文件,解决中文乱码UTF-8的方法分析

    本文实例讲述了PHP读取文件,解决中文乱码UTF-8的方法。 text, 0, 3);$first4 = substr($text, 0, 3);$encodType = ;if ($first3 == UTF8_BOM) $encodType = UTF-8 BOM text, 0, 3);$first4 = substr($text, 0, 3);$encodType = ;if ($first3 == UTF8_BOM) $encodType = UTF-8 BOM 相关内容感兴趣的读者可查看本站专题:《PHP编码与转码操作技巧汇总》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php常用函数与技巧总结》及《PHP错误与异常处理方法总结 》希望本文所述对大家PHP程序设计有所帮助。

    40520

    网站头部出现白条或空白行解决方案

    仔仔细细检查了整个模板,发现代码没有冗余的地方;后来也有想到不可见控制符的问题,但是找来找去也没发现;最后就用 Editplus 编辑器重新打开模板检查,当我重新另存为的时候发现原来页面的编码是 UTF-8 + BOM 这种编码方式一般会在 windows 操作系统中出现,比如 WINDOWS 自带的记事本等软件,在保存一个以 UTF-8 编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM 但对于 PHP 来说,BOM 是个大麻烦。因为 PHP并 不会忽略BOM,所以在读取、包含或者引用这些文件时,会把 BOM 作为该文件开头正文的一部分。 解决办法: 遇到这种问题的解决方法就是用 Editplus 2.12 版本以上编辑器或者 EmEditor 或者 UltraEdit(需要取消添加BOM的相关选项)或者 Dreamweaver(需要取消添加 BOM的相关选项)重新保存一下 utf-8 格式的文档!

    39420

    PSR-各个框架遵循的统一编码规范现代PHPer的开发规范

    PSR是PHP Standards Recommendation的简称,意为 PHP 推荐标准、PHP 开发的实践标准。 要想了解 PSR,首先得知道制定这一标准的人组织是谁:PHP-FIGPHP-FIG全称为PHP Framework Interop Group,是一个组织,这个组织的成员由一些 PHP 框架的代表组成, PSR,PSR 是 PHP 标准,而 PSR-1 是 PHP 最基本也是最简单的标准PHP 标签PHP 代码 必须 使用 长标签 或 短输出标签; 一定不可 使用其它自定义标签。 PHP 的短标签,但是这个短标签是不推荐的,使用才是规范的方法,只是因为这种短标签使用的时间比较长,这种特性才被保存了下来编码PHP 代码 必须 且只可使用 不带 BOM 的 UTF-8 编码这个也是很常见 ,就是无 BOM 和有 BOM 格式,记得刚开始学 PHP 的时候,都会强调不要用记事本打开编辑,一定要搞成无 BOM 格式啊目的(副作用)一个 PHP 文件 可以 定义符号(类、性状、函数、常量等),

    32020

    UTF8最好不要带BOM,附许多经典评论

    UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOMbom应该是windows特有的,在制作网页时会产生各种意想不到的问题,例如多输出了一个空行,影响PHP的session或者cookies功能(出现 header already sent错误),甚至可能引起页面的乱码 为了处理这个问题我甚至写了一个批量处理的PHP脚本。 另外不同的文本编辑器对于有无BOM的称呼也略有不同,比如EditPlus,有BOM的称为UTF-8+,无BOM的称为UTF-8,而在Notepad++中,有BOM的被称为标准UTF-8,而无BOM则被称为 但有些程序不能识别这个标志,比如php就会直接把这个标志当文本解析,不会忽略。相信很多遇到php输出文本解析乱码或者解析错误的同学都遇到这样的问题。

    1.4K20

    wordpress 网页头部有空白怎么解决

    分析问题:wordpress 模板文件采用 utf8 编码,index.php 有包含多个文件,因为博主之前用 Dreamweaver 编辑过首页 index.php 文件,估计就是这个时候多了 BOM 最后的二进制流中包含了多次 UTF8 BOM 标记,IE 不能正常解析包含多个 UTF8 BOM 标记的页面,直接替换成实际显示的回车,这样导致一个空行。只编辑过首页,所以别的页面都还正常。 如果模板包含多个 utf8 文件,把文件保存为无 BOM 的 UTF-8 格式就可以了。? 解决步骤:用 Notepad++这个软件(没有的去问度娘),打开模板文件夹里面的 index.php(你哪个页面有空白就改动相应的 php 模板页面),选择“格式”-“以 utf-8 无 bom 格式编码

    39240

    推荐一款Web渗透测试数据库

    子命令提供了编码的功能编码方式*-t--type*支持:url url-all hex decimal unicode unicode-all md5 sha base64 base32 html html-all php-chr decode子命令提供了解码的功能,并提供非ASCII编码编码推测功能解码方式*-t--type*支持:auto(默认) hex url unicode decimal base64 base32 html php-chr x61x61xe5x93x88xe5x93x88 3.1.10 文件处理功能pen.py的file子命令提供了常用的文件操作,包括:文件查看、文件编码推断、文件类型转换、文件hash计算、文件图片隐藏(制作php 图片木马)使用*--list*查看支持的文件编码转换格式:utf-32le utf-32le-bom utf-32 utf-32-bom utf-32be utf-32be-bom utf-16be utf -16be-bom utf-8 utf-8-bom utf-16 utf-16-bom utf-16le utf-16le-bom gbk gb2312 big5 ...例如:# 检测文件编码类型pen.py

    855130

    刨根究底字符编码之十一——UTF-8编码方式与字节序标记

    (笨笨阿林原创文章,转载请注明出处)二、字节序标记BOM? 因为它会影响到无法识别它的编程语言,如gcc会报告源码文件开头有无法识别的字符;而在PHP中,如果没有激活输出缓冲(output buffering),它会使得页面内容开始被送往浏览器(即header头被提交 ),这使PHP脚本无法指定header头(HTTP Header)。 它相对于其他编码方式对英语更为友好,同样也对计算机语言(如C++、Java、C#、JavaScript、PHP、HTML等)更为友好。它在处理ASCII等常用字符集时很少会比UTF-16低效。 因此,应该尽量使用UTF-8(准确地说,应该尽量使用UTF-8 without BOM,即不带字节顺序标记BOM的UTF-8)。

    47930

    让Flash MP3 Player运行在非PHP平台(ASPASP.NetJava静态文件)

    今天从《10款Flash和Javascript网页音乐播放器》看到一个不错的可以支持自动记忆播放进度的网页播放器Flash MP3 Player,但是经过简单了解之后发现这个Flash版的播放器还需要PHP 的支持,于是打算换其它的,但是找遍了搜索引擎也没找到第二款支持AutoResume功能的网页播放器,于是抱着试试看的态度研究了一下PHP代码。 不看不要紧,一看才知道原来PHP代码就是根据指定的目录循环列出此目录下面的所有mp3歌曲,然后输出成xml形式。 这下子一切都明朗了,于是先把官网的php文件(http:www.flashmp3player.orgflashmp3player.php? file_dir=mp3)输出的xml做成静态文件flashmp3player.xml如下,注意编码方式是UTF-8 Without BOM

    21040

    关于Windows下的弱智记事本

    其实我很早以前就不用Win自带的记事本了,一直Notepad++和Editplus混合使用,但是当时也不知道什么原因,用记事本编辑了一个插件的php文件,结果微信公众平台里面token验证失败一直报错, 折腾一晚上,到最后才知道由于用记事本打开编辑,文件袋BOM,导致token验证失败。 记得把Notepad++的默认编码设置为UTF-8 without BOM(由于兼容性,带BOM的utf-8在一些浏览器中显示为乱码)即可。?

    70860

    linux批量将文件编码由gbk转成utf8

    思路找出目录下的所有文件类型遍历要转码的文件类型,如.php利用vim的set fileencoding=utf8进行转码具体实现设置~.vimrcset fileencodings=utf-8,ucs-bom binbashfor i in `find -name *.php`do vim -s gbk_utf8.vi $idonegbk_utf8.vi:set fileencoding=utf8:wq!

    1.7K40

    PHP PSR规范

    PSR 是由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准,这是具体的地址:https:learnku.comdocspsr这里顺便把基本的规范写一下至今,php-fig已经发布了五个规范 自动加载标准,2014-10-21该标准已经被废弃,使用PSR-4替代,不再细讲PSR-1:基本的编码风格PSR-2:编码风格(更严格)PSR-3:日志记录器接口PSR-4:自动加载PSR-1PHP标签: PHP 编码: PHP文件必须使用无BOM的UTF-8编码。 副作用: 一个PHP文件可以定义符号(比如类、函数、常量等),或者执行只有唯一副作用的操作(比如输出结果、处理数据等),但是不能同时做这两件事,尽量是一个PHP文件的功能单一。 关键字: PHP的关键字必须使用小写,而且true, false, 和 null也必须小写。

    24020

    相关产品

    • Serverless HTTP 服务

      Serverless HTTP 服务

      Serverless HTTP 基于腾讯云 API 网关平台,为互联网业务提供 0 配置、高可用、弹性扩展的对外 RESTful API 能力,支持 swagger/ openAPI 等协议。便于客户快速上线业务逻辑,通过规范的 API 支持内外系统的集成和连接。

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注云+社区

      领取腾讯云代金券