utf-8和utf-8 +bom 有什么区别? - Web与移动开发者入门必知~

返回模板与插件交流区
1回复贴,共1页,点击数:1676

无标题.png



初学web与移动开发者,会对UTF-8和UTF-8+ BOM间区别费解,甚至会因此造成在mac上的文件损失(与win交互时格式错乱丢失),这二者有什么区别呢?


简而言之:

utf-8+bom比utf-8多了三个字节前缀:0xEF0xBB0xBF,有这三个字节前缀的文本或字符串,程序可以自动判断它为utf-8格式,并按照utf-8格式来解析文本或字符串,否则,一个文本或者字符串在未知编码的情况下,需要按照字符编码规范去一个个验证。


那是不是BOM更好呢?答案是否定的,让我们来看技术讲解:

 



BOM——Byte Order Mark,就是字节序标记

在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。

UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。

UTF-8编码的文件中,BOM占三个字节。如果用记事本把一个文本文件另存为UTF-8编码方式的话,用UE打开这个文件,切换到十六进制编辑状态就可以看到开头的FFFE了。这是个标识UTF-8编码文件的好办法,软件通过BOM来识别这个文件是否是UTF-8编码,很多软件还要求读入的文件必须带BOM。可是,还是有很多软件不能识别BOM。

在Firefox早期的版本里,扩展是不能有BOM的,不过Firefox 1.5以后的版本已经开始支持BOM了。现在又发现,PHP也不支持BOM。PHP在设计时就没有考虑BOM的问题,也就是说他不会忽略UTF-8编码的文件开头BOM的那三个字符。

由于必须在在Bo-Blog的wiki看到,同样使用PHP的Bo-Blog也一样受到BOM的困扰。其中有提到另一个麻烦:“受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。一切依赖COOKIE、SESSION实现的功能全部无效。”这个应该就是Wordpress后台出现空白页面的原因了,因为任何一个被执行的文件包含了BOM,这三个字符都将被送出,导致依赖cookies和session的功能失效。

解决的办法嘛,如果只包含英文字符(或者说ASCII编码内的字符),就把文件存成ASCII码方式吧。用UE等编辑器的话,点文件->转换->UTF-8转ASCII,或者在另存为里选择ASCII编码。如果是DOS格式的行尾符,可以用记事本打开,点另存为,选ASCII编码。如果包含中文字符的话,可以用UE的另存为功能,选择“UTF-8 无 BOM”即可。

 

 

 

===================================================================================================


BOM是Byte Order Mark(定义字节顺序),因为在网络传输中分两种顺序:大头和小头。

由于兼容性,带BOM的utf-8在一些browser中显示为乱码。

网上搜索了关于Byte Order Mark的信息:
在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。
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。
Windows就是使用BOM来标记文本文件的编码方式的。

带BOM的UTF-8,所有PHP无法识别,直接将EF BB BF输出,在charset="utf-8"的页面中是空白,在GB2312的页面中的输出的就是稀有汉字:锘匡豢

1楼 2015/12/09 16:28

股票入门基础知识都有哪些?这是很多炒股新手关注的问题,难倒了不新手,虽然现在去网上搜索很方便,但东西多乱杂,很难找出相关的适合的知识。那么,下面就这个问题给大家做一个总结,以便大家能够更快的了解入门的相关知识。

可以说关于股票入门基础知识有很多,就从最基本的“什么是股票”开始,到了解一些经常使用的看盘和分析工具。简单地说,

第一、什么是股票以及股票交易,包括交易场所和方法。这些基础知识又包括股票的发行、交易场所、如何开户以及如何在网上进行交易等。

第二、简单的看盘。例如什么是K线图?K线图有什么用?什么是移动平均线?什么是成交量?什么是趋势?跌停涨停怎么计算等等。

第三、常用的技术分析方法。可以说股票的技术分析方法有多种,介绍如下:

A、K线分析。K线分析主要是以K线形态为基础,K线形态有很多,分为顶部反转形态、底部反转形态,上升趋势持续形态、下降趋势持续形态,再就是整理形态,比如楔形整理、箱型整理、三角整理等等。

B、与交易量相关的成交量,成交量分析主要有三样,按筹码为单位的成交量、以金额(元)为单位的成交金额,还有是以换手率作为描述的成交情况。成交量也有形态,比如堆量、地量和天量、缩量、增量等等。

C、趋势分析方法。趋势分析是股票分析的重要部分,关于趋势分析的技术工具有均线系统、布林线、趋势线等等。

D、常用技术指标的简单分析。这部分内容主要是MACD指标,DIM、KDJ指标等。

第四、 基本的财务分析指数应该也是必不可少的,要了解一些基本的财务知识,学会看懂财务报表,知道一些关键的财务指标的意义。比如最基本的市盈率、市净率、每股收益等等。

以上便是股票入门基础知识的主要内容,当然这是最基础的,如果想进一步提高,则可以对以上的知识点进一步拓展学习和研究。要想能够在股市投资中获得较稳定的收益,股票入门基础知识固然不可不学,但更重要的是要在投资过程中不断积累经验和教训,磨砺头心态。

关注永安钱庄,获取最有价值的互联网金融投资理财知识。http://www.yonganqianzhuang.com/


2楼 2016/01/20 17:04 收起回复
您未登录,没有发贴权限[点此登录]