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,顧名思義,它是個沒有寬度也沒有斷字的空白。