的問題

在現網代碼和配置文件裏面,發現中文出現亂碼。一查發現這些文件是由於「編碼(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

相關文章
相關標籤/搜索