繁体   English   中英

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

[英]How to display multi-byte characters in Groovy?

下面的代码显示?????,当我给出多字节语言Ex时:中文

import groovy.json.JsonSlurper

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

println jsonObj.name

println jsonObj.age

输出:

???????

23

我需要做任何编码和解码来处理吗?

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

根据下面的API,有一种方法可以在其中传递参数以指定字符集。

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

下面的方法可能有用。 将您的文本转换为字节数组,然后使用以下方法。

parse(byte[] bytes, String charset)

我可以想到的另一种情况是,源文件是使用字符集编码的,而字符集不是操作系统的默认字符集。

正如Jon Skeet所说:您需要一个具有Unicode的控制台(例如eclipse的grep控制台: http : //marian.schedenig.name/projects/grep-console/ )才能正确格式化输出。

根本不是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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM