2016-03-05 110 views
0

我寫了一個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。我怎樣才能使代碼適用於這兩個版本?

+1

嘗試添加一個Accept-Charset頭到您的POST請求中,並將其值設置爲UTF-8。 –

+0

@SteveC這樣做,我現在得到這個作爲輸出:'jennéfergarcÃa'。 STill我沒有得到原來的字符串迴應:(這是我添加的代碼:'httpPost.setHeader(「Accept-Charset」,「UTF-8」);' – user5917011

+0

你能證明'inputJSON'是UTF -8? –

回答