我有一个Groovy脚本,可以从CLI获取用户输入。 CLI支持西里尔字符,编码和字符集均为UTF-8。然而,当Groovy用西里尔字符读取输入时,它看到的只是“???????”。此外,Groovy无法使用给定参数创建目录或文件。有没有人有任何想法迫使Groovy接受西里尔字符?感谢。
答案 0 :(得分:3)
确保您使用的阅读器使用与CLI相同的编码。如果是,则可能是显示字符的问题。您可以验证groovy正在获得的Unicode代码点:
// 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