在我的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。 –