/ / Jersey REST Кодування символів - java, json, rest, gson

Джерсі REST Кодування символів - java, json, відпочинок, gson

У мене є деякі проблеми, що стосуються кодування характеру з gson. У мене є веб-служба, яка надсилає наступну відповідь JSON:

{
"version": "v2",
"result": {
"class": "SearchSizeBean",
"result_list": [
{
"id": 0,
"name": "Bitte wu00c3u00a4hlen"
},
{
"id": "21",
"name": "176"
}
]
}
}

Я прошу веб-сервіс із таким кодом:

ClientResponse response = webResource.path(version)
.path(path)
.accept(MediaType.APPLICATION_JSON)
.method(method.name(), ClientResponse.class, paramMap);

if (response.getStatus() == 200)
{
responseBody = response.getEntity(String.class);
...
}

Під час перевірки відповідіВведіть отриманий рядокпоказує точно такий же результат, як JSON, згаданий вище. Але після використання GSon для перетворення рядка JSON в Об'єкт символи перетворюються неправильно:

Розбір з GSON:

Gson gson = new GsonBuilder().disableHtmlEscaping()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.registerTypeAdapter(Transferable.class, new TransferableDeserializer())
.setDateFormat("yyyy-MM-dd HH:mm:ss")
.create();

RestResponse responseDTO = gson.fromJson(responseBody, RestResponse.class);

Отриманий вміст:

Response: SearchSizeBean[
resultList={
PosSize [id=0, name=Bitte wählen],
PosSize [id=21, name=176]
}
]

UPDATE:

Я скопіював неправильний вміст JSON. Я відредагував JSON, щоб показати правильний рядок JSON. Дані надсилаються в унікоді wu00c3u00a4. Коли я перевіряю реакцію після перетворення GSon, вона стає шістнадцятковою: C3 82 C2 A4

Відповіді:

1 для відповіді № 1

Проблема була в PHP-коді на стороні сервера. У мене є сценарій, який уже був закодований у utf-8. Я зашифрував рядок "Bitte wählen" функцією php utf8_encode() що призвело до моєї проблеми.

Дякую вам, МакДоуелл, ваші підказки вивели мене на правильний шлях!

Рішення було ні скористатися функцією та просто надіслати рядок "Bitte wählen".