0
我有一個Groovy腳本,它接受來自CLI的用戶輸入。 CLI支持西里爾文字符,編碼和字符集都是UTF-8。然而,當Groovy用西里爾字符讀取輸入時,它看到的只是「???????」。此外,Groovy無法使用給定參數創建目錄或文件。有沒有人有任何想法強迫Groovy接受西里爾字符?謝謝。可以從Groovy中的CLI讀取西里爾文(俄語)字符嗎?
我有一個Groovy腳本,它接受來自CLI的用戶輸入。 CLI支持西里爾文字符,編碼和字符集都是UTF-8。然而,當Groovy用西里爾字符讀取輸入時,它看到的只是「???????」。此外,Groovy無法使用給定參數創建目錄或文件。有沒有人有任何想法強迫Groovy接受西里爾字符?謝謝。可以從Groovy中的CLI讀取西里爾文(俄語)字符嗎?
確保您正在使用的讀卡器使用與您的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
我想這 'System.in.withReader( 「UTF-8」 ){ println it.readLine(); }' 它仍在輸出??????當給西里爾。我更關心正確地創建一個目錄,而不是輸出正確的文本。 – UrbanCoder 2013-03-14 15:35:13
什麼操作系統?這可能是Java使用另一種編碼的文件名。嘗試在命令行中添加'-Dfile.encoding = UTF-8'。 – ataylor 2013-03-14 15:48:42
這是在窗戶上。並且我的編碼在系統屬性中設置爲UTF-8,使用'JAVA_TOOL_OPTS = -Dfile.encoding = UTF-8' – UrbanCoder 2013-03-14 16:06:36