在我的GSON测试类中,我有一个类必须被序列化的字符串。GSON - 使用unicode字符
问题是,特殊的Unicode字符如\u06A4
或►
转换为?
。这不是我想要这个工作。
这里是我的类:
public final class JSONvsBinary {
public static final void run() throws Exception {
A a1 = new A();
a1.a = "bla, blu., € @ xyz Ø, \u06A4 ►";
GsonBuilder builder = new GsonBuilder();
builder.excludeFieldsWithModifiers(Modifier.TRANSIENT);
builder.setPrettyPrinting();
builder.disableHtmlEscaping();
builder.serializeNulls();
builder.serializeSpecialFloatingPointValues();
Gson gson = builder.create();
final String gsonString = gson.toJson(a1, A.class);
final byte[] gsonBytes = gsonString.getBytes("UTF8");
System.out.println("GSON:\n" + new String(gsonBytes, "UTF8"));
System.out.println("GSON bytes: " + gsonBytes.length);
}
@SuppressWarnings("unused")
private static final class A {
public String a;
}
}
这就是输出:
GSON:
{
"a": "bla, blu., € @ xyz Ø, ? ?"
}
GSON bytes: 44
我设置字节编码成UTF-8,但它不工作...
老实说,这与Gson无关 - 您的终端不能正确显示这些字符。在我的机器上工作得很好。 –
哦,有趣。我如何显示这些消息?使用JOptionPanes? – MinecraftShamrock
系统上的默认字符集是什么?似乎很奇怪它是* not * utf-8。除非...是这个窗口,你正在使用命令行?这是可能解释它的windows-1252的问题。如果是这样,是的......或者使用带有控制台窗口的IDE。 –