[英]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.