|
我將原來在Eclipse中開發(fā)的工程搬到了Android studio上來,在運(yùn)行,編譯程序的過程中出現(xiàn)了錯(cuò)誤。提示存在非法字符。
后來發(fā)現(xiàn)是由于程序代碼中有中文字符的出現(xiàn),問題就出在對中文支持的UTF-8編碼上。
utf-8編碼分為BOM和非BOM兩種格式。有bom頭的存儲或者字節(jié)流,它一定是unicode字符集編碼。究竟屬于那一種utf-8還是utf-16還是utf-32)可以通過BOM頭來進(jìn)行判斷。在utf-8編碼文件中BOM在文件頭部,占用三個(gè)字節(jié),用來標(biāo)示該文件屬于utf-8編碼。UTF-8的BOM是 EFBBBF,因?yàn)閁E載入U(xiǎn)TF-8文件會轉(zhuǎn)成Utf16,上述的EFBBBF 在Utf16中是FFFE(Unicode-LE的BOM)。
在Eclipse中,出現(xiàn)有BOM的編碼格式的字符它可以自動轉(zhuǎn)換成非BOM格式的文檔,不用進(jìn)行手動的更改。但是Android studio并不支持BOM格式的編碼的向非BOM格式的自動識別和轉(zhuǎn)換,所以就出現(xiàn)了上述的問題。
簡答的解決辦法就是講出現(xiàn)編碼錯(cuò)誤提示的文檔轉(zhuǎn)化為非BOM格式編碼的文檔就可以了。在這里我們可以借助一個(gè)簡單的編輯工具notepad++(notepad++同樣不能自動轉(zhuǎn)換BOM和非BOM格式的文檔)來進(jìn)行轉(zhuǎn)換。
找打出現(xiàn)編碼錯(cuò)誤的文件用notepad++打開然后打開“格式”選擇“以UTF-8無BOM格式編碼”之后回到Android studio就可以解決問題了。
|
|