Почему мой код возвращает символы Unicode? - PullRequest
0 голосов
/ 22 октября 2018
String encodedInputText = URLEncoder.encode("input=" + question, "UTF-8");
            urlStr = Parameters.getWebserviceURL();
            URL url = new URL(urlStr + encodedInputText + "&sku=" + sku);
            BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
            jsonOutput = in.readLine();
            in.close();

Проблема в том, что возвращаемая строка JSON содержит все юникоды, такие как

"question":"\u51e0\u5339\u7684",

Не фактические китайские символы.«UTF-8» должен решить проблему.Почему не так?

РЕДАКТИРОВАТЬ:

ObjectMapper mapper = new ObjectMapper();
ResponseList = responseList = mapper.readValue(jsonOutput, ResponseList.class);

1 Ответ

0 голосов
/ 22 октября 2018

Это не проблема кодирования, это проблема вашего источника данных.Кодирование вступает в игру, когда вы конвертируете байты в строку.Вы ожидаете, что кодирование преобразует строку в форме \ uxxxx в другую строку , чего не произойдет.

Весь смысл в том, что источник данных сериализует данные таким образом, так чтоисходные данные исчезли и были заменены на \ uxxxx.

Теперь вам придется вручную захватывать последовательности \ uxxx и преобразовывать их в реальные символы.

...