有关BOM头的一些知识

在psr开发标准中,有一条是讲的,php只能使用无bom的utf8格式 . 那么这个bom是几个意思.  
说一些理论内容 .

在UCS编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE"。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。

这写了些goshit呀.如果觉得说的很烂 .咱们这里准备一份白话文参考.
也就是说呀,系统通过文件的一些前面的字符来判断这个文件的格式 .

如果还不懂???那就简单了.咱们还准备了一份更简单的解释,供智力方面可能出现一些与常人不同的朋友来参考
html文件 中, 一般能看到的内容 是

<body>标准这里面的内容才是可见的</body>.

那在

<head><meta charset="UTF-8" /></head>

其中, head中有一个是这样一个charset标签.这就是"bom" 没错,如果这个都看不懂,推荐北京安定....

那这个标签的位置在哪,怎么看到呢. 用ue编辑器打开就可以看到16进制是以 EFBBBF开头的内容.把它干掉就ok了. 没毛病....

后期会准备一份批量去bom头的php的源码.敬请期待!

参考关键词  unicode UCS utf-8  ansi

时间: 2024-08-29 02:36:46

有关BOM头的一些知识的相关文章

诡异的json包含bom头

今日项目碰到 bom头跑错 Exception in thread "main" com.fasterxml.jackson.core.JsonParseException: Unexpected character ('' (code 65279 / 0xfeff)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') at [Source: {"state&q

关于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头的UTF-8文件

UTF-8(带BOM):writer = New StreamWriter(FilePathName, True, System.Text.UTF8Encoding.UTF8) UTF-8(不带BOM):writer =New StreamWriter(FilePathName, True, New UTF8Encoding(False)) 生成不带BOM头的UTF-8文件,布布扣,bubuko.com

关于PHP的BOM头

一直用的是wamp的环境,php的版本还停留在5.3.php7都出来了,我连php5.6都还没用一把,很多相对于5.3时代的新函数和特性都还没体验到.但是碍于懒,决定装phpstudy切换到5.6的版本体验一把. 原先的wamp环境下mysql是没有登录密码的,但是phpstudy默认有个密码,所以我需要去我目前的项目框架配置项里改一下数据库的连接密码,心想就是改个密码嘛犯不着开sublime了,直接用记事本给改了.然后打开我的项目,首页出来了,没啥问题,再点登录,哎?验证码咋不出来了?用fir

什么是BOM头(转)

类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM).它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码.对于一般的文件,这样并不会产生什么麻烦.但对于 PHP来说,BOM是个大麻烦. PHP并不会忽略BOM,所以在读取.包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分.根据嵌入式语言的特点,这串字符将被直接执行(显示)出来.由此造成即使页面的 top padd

C#写UTF8文件时指定是否含BOM头

BOM的基本概念 在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF.而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中.UCS规范建议我们在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE".这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的:如果收到FFFE,就表明这个字节流是Little-Endian的.因此字符"ZERO WIDTH N

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

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

编码格式简介:ASCII码、ANSI、GBK、GB2312、GB18030和Unicode、UTF-8,BOM头

编码格式简介:ASCII码.ANSI.GBK.GB2312.GB18030和Unicode.UTF-8,BOM头 二进制: 只有0和1. 十进制.十六进制.八进制: 计算机其实挺笨的,它只认识0101这样的字符串(二进制),当然了我们看这样的01串时肯定会比较头晕的. 所以很多时候为了描述简单都用十进制,十六进制,八进制表示.实际上都是等价的,没啥太多不一样. 位(bit) 计算机中存储一个0,或者一个1的位置空间,叫做位. 字节(byte) 计算机中,我们把连续的8个位空间,叫做一个字节. A

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