以下代码显示?????,当我给出多字节语言Ex:Chinese
import groovy.json.JsonSlurper
def jsonObj = new JsonSlurper().parseText( '{ "name":"怎么样", "age": 23}')
println jsonObj.name
println jsonObj.age
输出:
???????
23
我是否需要进行任何编码和解码来处理?
如果是,我如何将该值作为Json参数传递给上面的ParseText方法?
答案 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);