论坛首页 Java版

『类型』sun jdk 1.4.2,带Byte Order Mark的 utf-8的java文...

浏览 996 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2005-01-27
软件环境:
sun jdk 1.4.2
配置文件:
    <target name="compile" depends="init">


        <javac srcdir="${src.dir}" destdir="${build.dir}"
encoding="UTF-8"
debug="on"
            deprecation="off"
            optimize="on"
            includes="**/*.java"
            fork="TRUE"
            verbose="yes"
>
            <classpath refid="build.classpath"/>

        </javac>
错误提示信息:
java文件前3个特殊字符BOM(Byte Order Mark)被认为是非法字符
你的分析:
问题原因:

BOM原本为了指明该文件使用的不同的编码上的字节顺序(高位在先或低位在先)。使用的是U+FEFF,而反向的FFFE则被定义为*非字符*,这样就可以根据读如的字节来判断字节顺序。

显然对于UTF-8编码来说,并不存在UTF-16和UTF-32的字节顺序的问题,因此本没有必要使用BOM。

但BOM同时也可以起到Unicode标戳的作用,因为其他非Unicode编码的文件也基本不可能用FEFF这样的字节作为开始。UTF-8编码下,BOM的字节是EFBBBF,也极少被作为其他非Unicode编码的文件首。

所以Unicode规范建议应用程序使用这个标戳来标示字符编码的无类型的数据流。不过Unicode规范也说这不是必需的,因此说Sun的javac并不因此就被认为是不遵守Unicode,因为javac可以有外部的参数来指定编码。



到底如何解决呢????
   
最后更新时间:2005-01-27
需要一个工具,支持保存没有bom的utf-8文件


记事本不行

editplus2.1.2可以,2.1.1不行

idea3.0.5可以。。但是拼音输入的时候,汉字在候选框中是空格,填到编辑区才显示正常


eclipse不知道。。
   
0 请登录后投票
论坛首页 Java版

跳转论坛:
JavaEye推荐