我必须在开源应用程序上工作,我已从存储库克隆了该项目,但此时我收到了编译错误
public static HashMap<Character, String> UNICODE_TRANS = new HashMap<Character, String>();
static {
UNICODE_TRANS.put('÷', "/");
UNICODE_TRANS.put('×', "*");
UNICODE_TRANS.put('÷', "/");
UNICODE_TRANS.put('×', "*");
UNICODE_TRANS.put('²', "^2");
UNICODE_TRANS.put('³', "^3");
UNICODE_TRANS.put('�', "^4");
UNICODE_TRANS.put('−', "-");
UNICODE_TRANS.put('µ', "micro");
UNICODE_TRANS.put('Ï€', "pi");
UNICODE_TRANS.put('Î ', "pi");
UNICODE_TRANS.put('€', "euro");
UNICODE_TRANS.put('Â¥', "japanyen");
UNICODE_TRANS.put('₤', "greatbritainpound");
UNICODE_TRANS.put('√', "sqrt");
UNICODE_TRANS.put('∛', "cuberoot");
UNICODE_TRANS.put('½', "1|2");
UNICODE_TRANS.put('â…“', "1|3");
UNICODE_TRANS.put('â…”', "2|3");
UNICODE_TRANS.put('¼', "1|4");
UNICODE_TRANS.put('â…•', "1|5");
UNICODE_TRANS.put('â…–', "2|5");
UNICODE_TRANS.put('â…—', "3|5");
UNICODE_TRANS.put('â…™', "1|6");
UNICODE_TRANS.put('â…›', "1|8");
UNICODE_TRANS.put('⅜', "3|8");
UNICODE_TRANS.put('â…�', "5|8");
}
说我每行的字符常量无效
UNICODE_TRANS...etc
为什么我不能使用这些字符常量。有没有什么可以设置来避免编译问题?
答案 0 :(得分:0)
UNICODE_TRANS.put('÷', "/");
该文字中有两个字符,因此它不是字符文字。意思是:
UNICODE_TRANS.put('÷', "/");
所以可能发生的事情是源代码保存为UTF-8,但编译器(和文本编辑器)将其解释为Windows代码页1252。
要修复普通javac
的编译器,请使用标记-encoding UTF-8
。您为不同的IDE和构建系统指定的方式会有所不同。
遗憾的是,Java没有用于编码的文件内信令。您可以通过确保源是纯ASCII来避免此问题,并通过escape包含非ASCII字符:
UNICODE_TRANS.put('\u00F7', "/");