【发布时间】:2019-07-29 16:40:08
【问题描述】:
重要:
我只能使用纯 Windows 记事本(IDE、Notepad++ 或任何其他文本编辑器都不允许)。
所以我有一个简单的类:
class Test{
public static void main(String[] args){
char c = 'қ';
System.out.println(c);
}
}
默认情况下,记事本使用 ANSII 编码保存文本文件,但如您所见,我的代码中有一个非 ANSII 字符。我可以通过命令提示符编译和运行这段代码,但输出是? 而不是қ,这似乎很明显。当我将文件的编码更改为 UTF-8 时,编译器会引发错误。我已经阅读了这篇文章Illegal Character when trying to compile java code,但是对于我的特定问题没有解决方案,因为正如我上面所写的,我不能使用任何文本编辑器,只能使用 Windows 记事本。
谢谢!
【问题讨论】:
-
我复制了相同的代码。当我运行 Visual Studio 代码时,与提到的相同的 o/p。但是无法通过cmd编译得到以下错误:a.java:1:错误:非法字符:'\u00bb'∩╗┐class Test{^ a.java:1:错误:非法字符:'\u00bf'∩╗┐ class Test{ ^ a.java:3: error: unclosed character literal char c = '╥¢'; ^ a.java:3: 错误: 非法字符: '\u203a' char c = '╥¢'; ^ a.java:3: 错误:未闭合字符文字 char c = '╥¢'; ^ 5 个错误
-
你不能用 Windows 记事本来做。
-
@SumanDey 据我了解,原因是 Windows 在文件开头附加了一个名为 BOM 的字符,以表明该文件使用的是非 ASCII 编码。但是如何解决这个问题?
-
你如何告诉 javac 你的源文件使用哪种字符编码?
-
@TomBlodget 我没有告诉 javac 任何事情。如果您的意思是是否正在编写“javac -encoding UTF8 Test.java”,是的,我尝试过,但没有成功。
标签: java encoding compiler-errors notepad byte-order-mark