【发布时间】:2013-12-29 13:19:36
【问题描述】:
我们为他们开发了一个特定的出口商,允许该职位 基于产品提供一种投资组合快照 - 两者 股票和固定收益投资组合。
我们为他们开发了一个特定的出口商,允许该职位 基于产品提供一种投资组合快照 - 两者 股票和固定收益投资组合。
第一个文本是我从 Jira 复制的,第二个是在 Cognity 中打印的。我通过 REST API 从 Jira 获取 JSON 格式的文本,并使用字符串生成器对其进行格式化,最后返回一个普通的字符串作为输出。 " ' - 等所有符号都没有正确打印,我在输出文本中得到了很多 –。我该如何解决?我在想是否有某种方法可以更改输出字符串的编码,也许这可能有效?
编辑: 这是我用来从 Jira 获取信息的方法,然后我从返回的 JSON 中提取我想要的信息。
String usercreds = "?os_username=user&os_password=password";
try {
url = new URL("http://jira/rest/api/2/issue/" + issuekey + usercreds);
URLConnection urlConnection = url.openConnection();
if (url.getUserInfo() != null) {
String basicAuth = "Basic " + new String(new Base64().encode(url.getUserInfo().getBytes()));
urlConnection.setRequestProperty("Authorization", basicAuth);
}
InputStream inputStream = urlConnection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
while ((s = reader.readLine()) != null) {
temp.append(s);
s = "";
}
issue = new JSONObject(temp.toString());
temp.setLength(0);
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
如果我理解正确,应该有一种方法可以让我指定我希望在此代码中的某处输出("application/json;charset=utf-8"),这可能会解决我的问题?
【问题讨论】:
-
您无法更改字符串的编码 - 但您可以影响字符串和字节之间的转换。不幸的是,尚不清楚您在哪里看到这些数据,以及还有什么可以帮助您。请提供更多上下文和诊断信息。
-
原始数据在 Jira 问题的字段中,我使用 REST API 获取整个问题信息,并以 JSON 对象的形式返回给我。然后我从那个 JSON 对象中提取想要的文本并将其打印到 Confluence 页面中,并且它不会显示所述特殊字符。如果这没有帮助,请问我一个更具体的问题,以便我给你一个更好的答案。
-
首先要做的是找出哪里坏了。在每个阶段将确切的字符记录为 UTF-16 代码单元(和字符串的长度),这将有助于查明问题。 Confluence 使用什么编码,你能影响它吗?
-
好的,我需要做更多的研究。我不认为解决方案会那么难。当我有更多时间处理这个问题时,我会回复你。
标签: java string character-encoding