В моем классе тестирования GSON у меня есть класс со строкой, которая должна быть сериализована.GSON - используйте символы 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
Что такое набор символов по умолчанию в вашей системе? Кажется странным, что это * не * utf-8. Разве ... это окна, и вы используете командную строку? Это prob windows-1252, который объяснил бы это. Если да, да ... или используйте IDE с консольным окном. –