在現網代碼和配置文件裏面,發現中文出現亂碼。一查發現這些文件是由於「編碼(Encoding)」爲ANSI。php
因此一時痛快地用 notepad++ 經過 「格式M」 選擇 「轉爲UTF-8編碼格式」 ,打包更新代碼。web
而後悲劇了。web server response 的信息,莫名地少了幾位。再用vim打開,就發現響應信息頭部多了一串字符:<feff>shell
原來,vim
有些編輯器,好比M$ Windows的記事本,在建立UTF8編碼文件時會在頭部添加一個不可見字符。這個字符能夠經過vim查看到,並且若是是一個php文件,php四、php5在解析時均會有輸出。app
原來這個被稱做BOM(Byte Order Mark)的不可見字符,是Unicode用來標識內部編碼的排列方式的,在UTF-1六、UTF-32編碼裏它是必需的,而在UTF-8裏是可選的。因 此,纔會出現有的編輯器在文件頭部添加添加BOM、而有的語法解析器又不做處理的的混亂狀況。編輯器
根據w3c裏FAQ的建議,解決方法就是,刪無赦!編碼
**************************spa
http://apps.hi.baidu.com/share/detail/35382688code
BOM的UTF文本文件例子,能夠用vi 杜撰幾個,相關命令以下:server
#設置UTF-8編碼
:set fileencoding=utf-8
#添加BOM
:set bomb
#刪除BOM
:set nobomb
#查詢BOM
:set bomb?
如何檢測UTF-8編碼中的BOM呢?
shell> grep -I -r -l $'\xEF\xBB\xBF' /path
如何刪除UTF-8編碼中的BOM呢?
shell> grep -I -r -l $'\xEF\xBB\xBF' /path | xargs sed -i 's/^\xEF\xBB\xBF//g'
在選擇用 notepad++ 轉 utf-8 時,要選擇 「轉爲UTF-8無BOM編碼格式」
http://7567567.blog.51cto.com/706378/641744