虽然我为JsonGenerator设置了编码UTF8但是当我用仍然错误的字体写字符串时
JsonFactory jsonFactory = new JsonFactory();
OutputStream out = new ByteArrayOutputStream();
JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(out, JsonEncoding.UTF8);
jsonGenerator.writeStartObject();
jsonGenerator.writeStringField("errorCode", "0");
jsonGenerator.writeStringField("responseData", "Tiếng Việt");
jsonGenerator.writeEndObject();
jsonGenerator.close();
String jsonObject = out.toString(); //{"errorCode":"0","responseData":"Tiếng Việt"}
任何人都可以帮助我吗?非常感谢!
更新
我找到了为什么不工作的原因。您可以尝试使用StringWrite而不是OutputStream。看起来像@Alastair McCormack回答。
StringWriter sw = new StringWriter();
JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(sw);|
...
// add your content here
String jsonObject = sw.toString()
答案 0 :(得分:0)
最大的问题是out.toString()
,因为它会使用您的语言环境将字节转换回Unicode字符串。这可能与您的WebSphere实例不同,也可能与本地计算机不同。
尝试:
String jsonObject = out.toString("UTF-8")
如果您要将此字符串发送到浏览器,请确保正确设置Content-Type标头,以便客户端知道它接收内容的编码。
建议:
如果您不使用out
中的字节,您可能需要考虑使用StringWriter:
StringWriter sw = new StringWriter();
JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(sw);
...
// add your content here
String jsonObject = sw.toString()
这将使字符串保持Unicode,直到您准备好将数据写出来为止。