小談Vim打開文件開頭的


       在本地Windows機上開發的PHP程序上傳到linuxserver上后,通過瀏覽器訪問對應接口。發現返回的數據前多了一個莫名的字符‘-’,甚為不解。之后通過網絡抓包的方式,查看到接口返回數據前多了 EF BB BF。

出現了如此令人不知所以然的bug總是極度讓人抓狂。經過了幾番嘗試之后,仍然不能得以解決,但也隱隱感認為可能是字符編碼的問題,遂用PHPStorm新建了一個文件,然后又一次將之前出bug的文件內容重寫了一遍(慶幸文件不是太大,用svn的話,應將文件回滾到之前沒有bug的版本號),然后又一次上傳。問題竟然攻克了。

喜悅中就此作罷,並沒有深究當中的緣由。

       原本以為bug就此解除,結果之后又碰到了一次,實在不能忍。這次查看代碼並非採用在本機上改然后又一次上傳server的方式,而是直接在server上用vim打開逐行查看。結果驚喜出現了。vim的文件頭顯示多了‘<feff>’字符。直覺告訴自己這就是罪魁禍首。於是進一步探究了<feff>字符。

       這里首先說一下utf8、utf16、utf32編碼。由於這樣的編碼相應多個字節,所以一般utf16和utf32會用BOM(Byte Order Mark,為不可見字符)標識內部編碼的字節序(Big/Litttle Endian),而utf8加不加BOM都能夠。一般我們用的編輯器utf8編碼是沒有加BOM標識的,可是windows下的記事本卻會將utf8編碼的文件前加上BOM標識。

而這個BOM標識即相應着linux環境下vim打開后出現的<feff>字符。

<feff>字符會出如今<?php ...?>的前面。PHP對這種文件進行解析時。會將這個字符輸出,從而導致了上述的bug。

       PS:還是少用記事本打開或編輯utf8編碼的代碼,血的教訓啊。。!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM