杰克逊的错误字体

Error font in jackson

虽然我为 JsonGenerator 设置了 Encoding 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()

最大的问题是 out.toString(),因为它会使用您的语言环境将字节转换回 Unicode 字符串。这可能与您的本地计算机的 WebSphere 实例不同。

尝试:

String jsonObject = out.toString("UTF-8")

如果您要将此字符串发送到浏览器,请确保 Content-Type headers 设置正确,以便客户端知道它接收内容的编码方式。

建议:

如果您不使用 out 中的字节,您可能需要考虑改用 StringWriter:

StringWriter sw = new StringWriter();
JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(sw);
...
// add your content here
String jsonObject = sw.toString()

这将使字符串保持 Unicode 格式,直到您准备好写出数据为止。