Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UTF-8 encoding problem with servlet and apache HttpClient

I have a servlet that sends a string with utf-8 encoding. Also I have a client written with apache httpcomponents library.

My problem is reading the response in utf-8. Some special characters like ñ or ç are not read correctly. If I test the server with an html page sending a request, the string is correct and the encoding is UTF-8 without BOM.

Some snippets: Servlet

response.setContentType ("application/json; charset=UTF-8");
PrintWriter out = response.getWriter ();
out.write (string);

Client

entity = response.getEntity ();
entity.getContentEncoding (); //returns null
resultado = EntityUtils.toString (entity, HTTP.UTF_8); //Some characters are wrong

Has anyone had the same problem?

SOLVED: Sorry guys the client and server were working correctly. I'm writting an android app and it seems that the logcat (where I print the messages) doesn't support utf-8 encoding.

like image 410
Gabriel Llamas Avatar asked Dec 14 '10 22:12

Gabriel Llamas


2 Answers

Have you tried

response.setCharacterEncoding("utf-8");

instead of setting the encoding via setContentType? It shouldn't make a difference according to the documentation, but who knows...

Also, make sure you didn't call response.getWriter() anywhere in your code before setting the character encoding, because the latter would not have any effect in that case.

like image 175
Thomas Avatar answered Oct 18 '22 19:10

Thomas


Make sure stream bytes are in UTF-8 format:

out.write((yourstring.getBytes("UTF-8"));
like image 38
mohammed irfan tirupattur Avatar answered Oct 18 '22 19:10

mohammed irfan tirupattur