为什么我的代码返回Unicode字符?

时间:2018-10-22 18:54:33

标签: java url inputstreamreader

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字符串包含所有Unicode代码,例如

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

不是实际的汉字。 “ UTF-8”应该可以解决该问题。为什么不呢?

编辑:

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

1 个答案:

答案 0 :(得分:-1)

这不是编码问题,这是您的数据源问题。将字节转换为字符串时,编码起作用。您希望将\ uxxxx形式的字符串转换为另一个字符串不会发生这种编码。

整个问题是,数据源正在以这种方式序列化数据,因此原始数据不见了,并被\ uxxxx替换。

现在,您必须手动捕获\ uxxx序列并将其转换为实际字符。