繁体   English   中英

具有Unicode字符的Java类名未运行

[英]Java Classname with unicode character not Running

我只是想测试Java Unicode支持。 我发现Java在其类名中支持Unicode字符。 但是当我尝试使用Unicode字体时,它没有编译。 下面是代码

具有Unicode字符的Java类名称

在编译过程中它抛出以下错误

编译时出错

“文件和Eclipse”工作区的字符集为UTF-8。

更新:这是源。 这有Unicode泰米尔语字母

public class தமிழ் {

    private static String வணக்கம் = "வணக்கம்";

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        வணக்கம்சொல்();
    }

    private static void வணக்கம்சொல்() {
        System.out.println(வணக்கம் + " வருக! வருக!!");
    }
}

关于类名中的Unicode字符的快速演示以及Windows上的麻烦。

创建以下Java类文件

Main.java

class Main {
    public static void main(String...args) {
        \u0ba4\u0bae\u0bbf\u0bb4\u0bcd.main(new String[0]);
    }
}

class \u0ba4\u0bae\u0bbf\u0bb4\u0bcd {
    public static void main(String[] arrstring) {
        System.out.println("\u0bb5\u0ba3\u0b95\u0bcd\u0b95\u0bae\u0bcd unicode!");
    }
}

所有unicode字符均与unicode转义符号一起使用。

因此,实际上,下面的源代码将创建相同的类文件

class Main {
        public static void main(String...args) {
                தமிழ்.main(new String[0]);
        }
}

class தமிழ் {
        public static void main(String[] args) {
                System.out.println("வணக்கம் unicode!");
        }
}

编译源代码(使用unicode转义的代码)

javac Main.java

这将创建类文件Main.classதமிழ்.class (例如,您可以使用同一目录中的explorer .检查文件名)

在CMD控制台中,无法显示Unicode文件名

> dir /b *.class
Main.class
?????.class

> java Main
??????? unicode!

在ConEmu中正确显示文件名

> dir /b *.class
Main.class
தமிழ்.class

> java Main
??????? unicode!

即使在CMD会话中无法正确显示和访问文件名தமிழ்.class ,Java也能够执行该类。 这意味着该类使用unicode字符正确存储。 但是在两种情况下,输出都是无效的。

如果您在Linux机器上运行上述代码,则输出将如预期的那样

$ java Main
வணக்கம் unicode!

使用Unicode字符编辑类可以直接在Linux上执行

$ java தமிழ்
வணக்கம் unicode!

编辑 PowerShell ISE

PS > ls *.class
...
Mode                LastWriteTime     Length Name                                                                                                  
----                -------------     ------ ----                                                                                                  
-a---        08/04/2018     12:34        317 Main.class                                                                                            
-a---        08/04/2018     12:34        443 தமிழ்.class                                                                                           

PS > java Main
??????? unicode!

PS > java தமிழ்
java : Error: Could not find or load main class ?????
At line:1 char:1
+ java தமிழ்

编辑与此Eclipse上的此错误报告相关,似乎它正在Windows 10上运行(我无法验证,没有一个)

这是一个问题:

  • Unicode 文本规范化ĉ可以是一个Unicode代码点(符号)或两个c以及一个组合的变音符号^ (零宽度)。 操作系统使用其中之一。 理想情况下,IDE应该强制执行规范形式。 (不知道。)
  • Windows命令行 cmd.exe仅限于其系统编码。 但是,您可以有一个纯ASCII主类,调用该类的主类。
  • 具有ASCII名称的可执行jar文件也应该没有问题。 MANIFEST.MF已经在UTF-8中,但是由于行长度不应超过72个字节,并且UTF-8每个字符为多字节,因此请小心。

  • 然后是可能会出现问题的版本控制系统 特别是尝试在Windows和Linux之间切换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM