[英]Java Classname with unicode character not Running
我只是想测试Java Unicode支持。 我发现Java在其类名中支持Unicode字符。 但是当我尝试使用Unicode字体时,它没有编译。 下面是代码
在编译过程中它抛出以下错误
“文件和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 தமிழ்
这是一个问题:
ĉ
可以是一个Unicode代码点(符号)或两个c
以及一个组合的变音符号^
(零宽度)。 操作系统使用其中之一。 理想情况下,IDE应该强制执行规范形式。 (不知道。) cmd.exe
仅限于其系统编码。 但是,您可以有一个纯ASCII主类,调用该类的主类。 具有ASCII名称的可执行jar文件也应该没有问题。 MANIFEST.MF已经在UTF-8中,但是由于行长度不应超过72个字节,并且UTF-8每个字符为多字节,因此请小心。
然后是可能会出现问题的版本控制系统 。 特别是尝试在Windows和Linux之间切换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.