2016-03-05 106 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? –

回答