ase*_*a38 28 java unicode compiler-errors javac
我保存了我的Java源文件,将其编码类型指定为UTF-8(使用记事本,默认情况下,记事本的编码类型为ANSI),然后我尝试使用以下命令编译它:
javac -encoding "UTF-8" One.java
Run Code Online (Sandbox Code Playgroud)
但它给出了一条错误消息"
One.java:1: illegal character: \65279
?public class One {
^
1 error
Run Code Online (Sandbox Code Playgroud)
还有其他方法,我可以编译吗?
这是来源:
public class One {
public static void main( String[] args ){
System.out.println("HI");
}
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*den 45
您的文件被读为UTF-8,否则有值"65279"字符就绝不可能出现.javac期待你的源代码是在平台默认的编码,根据该javac文件:
如果未指定-encoding,则使用平台默认转换器.
十进制65279是十六进制FEFF,它是Unicode字节顺序标记(BOM).在UTF-8中没有必要,因为UTF-8总是被编码为八位字节流并且没有字节序问题.
即使没有必要,记事本也喜欢坚持使用BOM,但有些程序不喜欢找到它们.正如其他人所指出的那样,Notepad不是一个非常好的文本编辑器.切换到不同的文本编辑器几乎肯定会解决您的问题.
Eti*_*nat 11
这对你的文本编辑器来说不是问题,这是javac的一个问题!Unicode规范称BOM是UTF-8中的选项,它并不是说它是被禁止的!如果BOM可以存在,那么javac可以处理它,但事实并非如此.实际上,在UTF-8文件中使用BOM对于区分ANSI编码文件和Unicode编码文件很有用.
建议的删除BOM的解决方案只是一种解决方法,而不是正确的解决方案.
此错误报告表明此问题永远不会得到解决:http://bugs.java.com/view_bug.do?video_id = 4508058
由于此主题位于"javac BOM"搜索的前2个谷歌搜索结果中,因此我将此处留给未来的读者.
小智 5
参见下文例如,我们可以使用程序进行讨论(泰卢固语)
程序(UnicodeEx.java)
class UnicodeEx {
public static void main(String[] args) {
double ????? = 10;
double ??????? = 25;
double ?????_???????_?????????;
System.out.println("The Value of Height = "+?????+" and Width = "+???????+"\n");
?????_???????_????????? = ????? * ???????;
System.out.println("Area of Rectangle = "+?????_???????_?????????);
}
}
Run Code Online (Sandbox Code Playgroud)
这是程序,同时另存为“ UnicodeEx.java”并将“编码”更改为“ unicode”
**如何编译**
javac -encoding“ unicode” UnicodeEx.java
如何执行
Java UnicodeEx
高度的值= 10.0且宽度= 25.0
矩形面积= 250.0
| 归档时间: |
|
| 查看次数: |
65170 次 |
| 最近记录: |