【发布时间】:2018-10-22 18:54:32
【问题描述】:
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);
【问题讨论】:
-
为什么要 UTF-8 解决问题?
-
首先,您正在对整个键值对进行编码,而不是仅对值进行编码,这可能是不正确的。关于您的问题,我们不知道为什么暴露未知 API 的未知服务器会返回它返回的内容。
-
除了编码 请求 URL 与响应格式无关之外,您的响应完全符合 UTF-8:反斜杠
u, 和十六进制数字都是有效的 UTF-8 字符。无论 JSON 的字符集如何,转义序列都是完全有效的 JSON。
标签: java url inputstreamreader