由于无效的字符常量,Android App无法编译

时间:2013-07-17 20:44:27

标签: java android unicode unicode-string

我必须在开源应用程序上工作,我已从存储库克隆了该项目,但此时我收到了编译错误

 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

为什么我不能使用这些字符常量。有没有什么可以设置来避免编译问题?

1 个答案:

答案 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', "/");