2013-03-14 61 views
0

我有一個Groovy腳本,它接受來自CLI的用戶輸入。 CLI支持西里爾文字符,編碼和字符集都是UTF-8。然而,當Groovy用西里爾字符讀取輸入時,它看到的只是「???????」。此外,Groovy無法使用給定參數創建目錄或文件。有沒有人有任何想法強迫Groovy接受西里爾字符?謝謝。可以從Groovy中的CLI讀取西里爾文(俄語)字符嗎?

回答

3

確保您正在使用的讀卡器使用與您的CLI相同的編碼。如果是,則可能是顯示字符的問題。您可以驗證的Unicode代碼點Groovy就是讓這樣的:

// test.groovy  
def input = System.in.withReader('UTF-8') { it.readLine() } 

input.eachWithIndex { ch, index -> 
    println "$ch, ${Character.codePointAt(input, index)}" 
} 

運行這從CLI:

$ echo $LANG 
en_US.UTF-8 
$ echo Здра́вствуйте | groovy test.groovy 
З, 1047 
д, 1076 
р, 1088 
а, 1072 
́, 769 
в, 1074 
с, 1089 
т, 1090 
в, 1074 
у, 1091 
й, 1081 
т, 1090 
е, 1077 
+0

我想這 'System.in.withReader( 「UTF-8」 ){ println it.readLine(); }' 它仍在輸出??????當給西里爾。我更關心正確地創建一個目錄,而不是輸出正確的文本。 – UrbanCoder 2013-03-14 15:35:13

+0

什麼操作系統?這可能是Java使用另一種編碼的文件名。嘗試在命令行中添加'-Dfile.encoding = UTF-8'。 – ataylor 2013-03-14 15:48:42

+0

這是在窗戶上。並且我的編碼在系統屬性中設置爲UTF-8,使用'JAVA_TOOL_OPTS = -Dfile.encoding = UTF-8' – UrbanCoder 2013-03-14 16:06:36

相關問題