ホームページ  >  記事  >  バックエンド開発  >  求分析这个神奇的字符是什么?

求分析这个神奇的字符是什么?

WBOY
WBOYオリジナル
2016-06-06 16:45:011145ブラウズ

我写php时,先输出一段html再include()一个文件(内无输出),再继续输出一段html,那么在最终输出的html内include部分会出现一个奇怪的东西,从而导致网页异常。经我分析,是不知怎么出现了这个一个字符,求分析这是什么字符。
求分析这个神奇的字符是什么?
文件下载链接神奇字符(用notepad++打开能看到).txt 用记事本打开是看不到那个字符的,用notepad++就能看到。

回复内容:

1,hex编辑器
打开为EF BB BF EF BB BF
2,打开google一搜就知道了.
  1. 该内容为UTF-8的BOM,也就是表明本文件采用的字节顺序是什么.多字节编码需要说明自己的顺序,来防止歧义.BOM就是这个作用.不过,UTF-8其实是不需要字节顺序说明的.(具体参考UTF-8编码).所有UTF-8的BOM其实是可有可无的.有也符合标准,没有也可以解析出来.不过这也就导致了各种分歧.
  2. 如果其他编辑器,错误的认为是其他编码格式,那么也可以强制解析出来,出来的就是各种乱码.
3,结合你的问题,就很简单了,这个是PHP的输出,总是带BOM的缘故.
php我没有用过,不过也有讨论如何去掉BOM输出.自己看下吧.
api - How to remove %EF%BB%BF in PHP string
----
这个问题,已经有比较靠谱的回答了.
我就是顺手下载下来了,既然看了,也就是写下来吧.
----
神奇是个非常讨厌的字眼,
它说明你不会分析问题,对待问题根本就不知道怎么着手处理.更不能顺藤摸瓜定位问题,何用妄谈解决问题呢.
(以上不是说提问人,只是结合自己身边的事情感慨一把)
放弃神奇这种字眼吧,碰到问题也不要没头苍蝇式的瞎碰.或者随便改来改去,梦想程序突然就神奇的正常了.要学会定位问题,分析问题,解决问题. BOM: Byte Order Mark
UTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行 如果文件不多,或者只是新建文件导致的原因,重新保存一次,保存的时候选择UTF-8 no BOM,或者不是UTF-8 with BOM的那个,有些编辑器是在“设置”里面设置保存是否带BOM头。 UTF-8 我下了你这个文件,打开( OS X, textmate 2 )看到的是

Unicode Character 'ZERO WIDTH NO-BREAK SPACE' (U+FEFF)

我搜索了一下,在维基上看到了这个
UTF-16的編碼模式
UTF-16的大尾序和小尾序儲存形式都在用。一般來說,以Macintosh製作或儲存的文字使用大尾序格式,以Microsoft或Linux製作或儲存的文字使用小尾序格式。
為了弄清楚UTF-16文件的大小尾序,在UTF-16文件的開首,都會放置一個U+FEFF字符作為Byte Order Mark(UTF-16LE以FF FE代表,UTF-16BE以FE FF代表),以顯示這個文字檔案是以UTF-16編碼,其中U+FEFF字符在UNICODE中代表的意義是ZERO WIDTH NO-BREAK SPACE,顧名思義,它是個沒有寬度也沒有斷字的空白。

总之,剩下的你自己搜索吧。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。