1

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

 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

为什么我不能使用这些字符常量。是否需要设置一些东西来避免这个编译问题?

4

1 回答 1

0
UNICODE_TRANS.put('÷', "/");

该文字中有两个字符,因此它不是字符文字。意思是:

UNICODE_TRANS.put('÷', "/");

因此,可能发生的情况是源代码保存为 UTF-8,但编译器(和您的文本编辑器)将其解释为 Windows 代码页 1252。

要正常修复编译器,javac请使用 flag -encoding UTF-8。您为不同的 IDE 和构建系统指定的方式会有所不同。

不幸的是,Java 没有用于编码的文件内信号。您可以通过确保源是纯 ASCII 并通过转义包含非 ASCII 字符来避免该问题:

UNICODE_TRANS.put('\u00F7', "/");
于 2013-07-18T10:41:26.017 回答