Ответ 1
По умолчанию, gson Unicode вытесняет определенные символы, из которых '
- один. (См. HTML_SAFE_REPLACEMENT_CHARS
в JsonWriter для полного списка.)
Чтобы отключить это, выполните
builder.disableHtmlEscaping();
В следующем минималистическом примере:
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class GsonStuff {
public static void main(String[] args) {
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
System.out.println(gson.toJson("Apostrophe: '"));
//Outputs: "Apostrophe: \u0027"
}
}
Апостроф заменяется представлением unicode в распечатке. Тем не менее, строка, возвращаемая из метода toJson
, буквально имеет символы '\', 'u', '0', '0', '2', '7'.
Декодирование с помощью json действительно работает и дает строку "Apostrophe:" в отличие от "Apostrophe:\u0027". Как его декодировать, чтобы получить тот же результат?
И еще один вопрос: почему случайный символ Юникода, такой как ش, не закодирован?
По умолчанию, gson Unicode вытесняет определенные символы, из которых '
- один. (См. HTML_SAFE_REPLACEMENT_CHARS
в JsonWriter для полного списка.)
Чтобы отключить это, выполните
builder.disableHtmlEscaping();
Используйте следующий код для кодирования
response.setCharacterEncoding("UTF8"); // this line solves the problem
response.setContentType("application/json");
Это решило мою проблему.