J2ME 打包出錯:Illegal Manifest Entry Key or Value "MIDlet-Version" – Android移動開發技術文章_手機開發 Android移動開發教學課程

J2ME 項目中修改瞭下jad文件中的MIDlet-Name,結果項目就不行瞭,不管編譯還是打包都出Illegal Manifest Entry Key or Value "MIDlet-Version"這個錯。但是看裡面的內容並未改動MIDlet-Version ,隻是改瞭MIDlet-Name,就怎麼都過不去。svn找出原來的jad覆蓋就又正常瞭。

    就把前後兩個jad用HxD對比瞭一下,發現改過的jad文件頭加上瞭 ef bb bf  三個字節。查瞭下,Unicode規范中有一個BOM的概念,說明如下:

    在UCS 編碼中有一個叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的編碼是FEFF。而FFFE在UCS中是不存在的字符,所以不應該出現在實際傳輸中。UCS規范建議我們在傳輸字節流前,先傳輸字符"ZERO WIDTH NO-BREAK SPACE"。這樣如果接收者收到FEFF,就表明這個字節流是Big-Endian的;如果收到FFFE,就表明這個字節流是Little- Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被稱作BOM。
    UTF-8不需要BOM來表明字節順序,但可以用BOM來表明編碼方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8編碼是EF BB BF。所以如果接收者收到以EF BB BF開頭的字節流,就知道這是UTF-8編碼瞭。
    Windows就是使用BOM來標記文本文件的編碼方式的。
    想到是用記事本改的jad文件…果然是記事本擅自加上瞭bom頭…換瞭Notepad++,還有在Eclipse裡面編輯,都不會亂加東西…
    windows自己的東西,少用為好

作者 liujian885

發佈留言