如何在Groovy中显示多字节字符?

时间:2015-08-12 13:27:46

标签: java json groovy

以下代码显示?????,当我给出多字节语言Ex:Chinese

import groovy.json.JsonSlurper

def jsonObj = new JsonSlurper().parseText( '{ "name":"怎么样", "age": 23}')

println jsonObj.name

println jsonObj.age

输出:

???????

23

我是否需要进行任何编码和解码来处理?

如果是,我如何将该值作为Json参数传递给上面的ParseText方法?

3 个答案:

答案 0 :(得分:0)

根据下面的API,有一种方法可以传递参数来指定Charset。

http://docs.groovy-lang.org/latest/html/gapi/groovy/json/JsonSlurper.html

以下方法可能有用。将文本转换为字节数组并使用以下方法。

parse(byte[] bytes, String charset)

我能想到的另一个场景是你的源文件是使用charset编码的,而charset不是你操作系统的默认字符集。

答案 1 :(得分:0)

正如Jon Skeet评论的那样:你需要一个支持unicode的控制台(比如eclipse的grep控制台:http://marian.schedenig.name/projects/grep-console/)来正确格式化你的输出。

答案 2 :(得分:0)

根本不是一个json问题。这里的Json实现适用于旧的优秀的java 2字节unicode字符。象形文字对它来说不是问题。问题在于输出编码。它是Windows还是Mac控制台?

证明代码:

def jsonObj = new JsonSlurper().parseText( '{ "name":"怎么样", "age": 23}')
Writer unicodeFileWriter = new OutputStreamWriter( new FileOutputStream("herogliph.txt"), "UTF-8");
unicodeFileWriter.write(jsonObj.toString());
unicodeFileWriter.close()

生成的herogliph.txt包含有效名称。

尝试这样的事情。

PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.println(unicodeMessage);