Java 为什么在尝试包含乌尔都语字符串时会出现编译错误?
我正在尝试添加乌尔都语字符串Java 为什么在尝试包含乌尔都语字符串时会出现编译错误?,java,unicode,utf-8,illegal-characters,Java,Unicode,Utf 8,Illegal Characters,我正在尝试添加乌尔都语字符串غزل,如下所示: class UnicodeCheck { public static void main(String args[]) { try { File f = new File("C:/Users/user/Desktop/unicodecheck.txt"); FileWriter writer = new FileWriter(f); writer.write("غزل"); writer.close();
غزل
,如下所示:
class UnicodeCheck {
public static void main(String args[]) {
try {
File f = new File("C:/Users/user/Desktop/unicodecheck.txt");
FileWriter writer = new FileWriter(f);
writer.write("غزل");
writer.close();
} catch(Exception exc) {
exc.printStackTrace();
}
}
}
当我试图编译上面的程序时,我得到了这个错误
UnicodeCheck.java:1: illegal character: \187
class UnicodeCheck {
^
UnicodeCheck.java:1: illegal character: \191
class UnicodeCheck {
^
2 errors
我不理解这个错误。为什么会出现这种情况以及如何克服这种错误?这取决于文本编辑器使用的字符集(编辑java源文件的地方)。尝试将其设置为
UTF-8
格式。这取决于文本编辑器(编辑java源文件的地方)使用的字符集。尝试将其设置为UTF-8格式。
因此,您需要剥离BOM表或将源文件转换为其他编码。记事本++可以转换单个文件编码,我不知道Windows平台上有用于此的批处理实用程序。
因此,您需要剥离BOM表或将源文件转换为其他编码。记事本++可以转换单个文件编码,我不知道Windows平台上有用于此的批处理实用程序。文件开头的字符来自字节顺序标记,一些文本编辑器喜欢将其插入文件开头。但是,Java编译器不接受具有BOM的文件。您有两个选择:
native2ascii
。比如说,
writer.write("غزل");
将转换为
writer.write("\u063a\u0632\u0644");
文件开头的字符来自字节顺序标记,一些文本编辑器喜欢将其插入文件开头。但是,Java编译器不接受具有BOM的文件。您有两个选择:
native2ascii
。比如说,
writer.write("غزل");
将转换为
writer.write("\u063a\u0632\u0644");
在.java文件中保存代码时选择
UTF-8字符集
。@Jayan你知道你改变了整个问题的意思吗?@Suhail Gupta:对不起,我已经用更好的标题修改了。本质上,具有unicode内容的文件是另一个问题。当同一个文件是java源代码时,修复程序是编辑器/使用不同的编码等@Jayan你在做什么?什么是java源文件?你知道我在问什么吗?@Jayan现在请不要在将代码保存到.java文件时对问题ChooseUTF-8字符集
进行任何编辑。@Jayan你知道你改变了整个问题的含义吗?@Suhail Gupta:对不起,我已经修改了更好的标题。本质上,具有unicode内容的文件是另一个问题。当同一个文件是java源代码时,修复程序是编辑器/使用不同的编码等@Jayan你在做什么?什么是java源文件?你知道我在问什么吗?@Jayan现在请不要对问题进行任何编辑,我已经以UTF-8格式保存了它。这就是我能在.java文件中看到乌尔都语字符串的原因。我已经用UTF-8格式保存了它。这就是我能在.java文件中看到乌尔都语字符串的原因。