我可以在Groovy中从CLI读取Cyrillic(俄语)字符吗?

时间:2013-03-14 14:32:28

标签: encoding groovy command-line-interface

我有一个Groovy脚本,可以从CLI获取用户输入。 CLI支持西里尔字符,编码和字符集均为UTF-8。然而,当Groovy用西里尔字符读取输入时,它看到的只是“???????”。此外,Groovy无法使用给定参数创建目录或文件。有没有人有任何想法迫使Groovy接受西里尔字符?感谢。

1 个答案:

答案 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