Arvind
Arvind

Reputation: 6474

obtaining response charset of response to get or post request

I am working to extract response charset in a java web app, where I am using Apache HTTP Client.

For example, one possible value obtained from "Content-Type" header is

    text/html; charset=UTF-8

Then my code will extract all text after the "=" sign...

So the charset as extracted will be

    UTF-8

I just wanted to know, is the above method for obtaining response charset correct? Or is there some scenario where the above code will not work? Is there something I am missing here?

Upvotes: 8

Views: 9506

Answers (3)

forty-two
forty-two

Reputation: 12817

Doesn't httpclient (or http core) already provide that functionality? Something like this:

HttpResponse response = ...
String charset = EntityUtils.getContentCharSet(response.getEntity());

Upvotes: 9

Iching Chang
Iching Chang

Reputation: 658

The method provided by forty-two can work. But the method is deprecated, I find out that this website has a good example of method to find the charset.

HttpEntity entity = response.getEntity();
ContentType contentType = ContentType.getOrDefault(entity);
Charset charset = contentType.getCharset();
System.out.println("Charset  = " + charset.toString());

Upvotes: 13

Julian Reschke
Julian Reschke

Reputation: 41997

Well, that approach will fail when

  1. the charset value is quoted
  2. when the quoted value uses escapes
  3. when there are parameters other than "charset"

Upvotes: 3

Related Questions