我寫了一個REST客戶端此端點:的HttpResponse有特殊字符
textmap.com/ethnicity_api/api
然而,當傳遞一個名稱字符串像jennífer garcía
在post數據,並設置編碼成UTF-8,應答我得到的不是同一個字符串。如何在響應對象中獲得相同的名稱? 下面是如何設置的請求,並得到thatI響應:在輸出名字
httpClient = HttpClients.createDefault();
httpPost = new HttpPost(baseurl);
StringEntity input = new StringEntity(inputJSON, StandardCharsets.UTF_8);
input.setContentType("application/json");
//input.setContentType("application/json; charset=UTF-8");
httpPost.setEntity(input);
response = httpClient.execute(httpPost);
if (response.getStatusLine().getStatusCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader((response.getEntity().getContent())));
output = org.apache.commons.io.IOUtils.toString(br);
System.out.println(output);
值爲:jenn�fer garc�a
這是從我的請求派遣了一個完全不同的字符集。我如何獲取與請求中發送的字符集相同的字符集?
其次,我想要相同的代碼在Java-6和Java-7中都可以工作。以上代碼僅使用Java-7。我怎樣才能使代碼適用於這兩個版本?
嘗試添加一個Accept-Charset頭到您的POST請求中,並將其值設置爲UTF-8。 –
@SteveC這樣做,我現在得到這個作爲輸出:'jennéfergarcÃa'。 STill我沒有得到原來的字符串迴應:(這是我添加的代碼:'httpPost.setHeader(「Accept-Charset」,「UTF-8」);' – user5917011
你能證明'inputJSON'是UTF -8? –