GSON not sending in UTF-8

I have no idea why you would write your own HTTP protocol code. It's a lot like writing your own XML parser: No matter how good a programmer you are, you are bound to get it wrong.

Anyway, as the DataOutputStream documentation states, doing writeBytes on a String will just discard its high eight bits. So what you get is... something, but not UTF8. What you should do is:

String jsonString = new Gson().toJson(objectToEncode);
byte[] utf8JsonString = jsonString.getBytes("UTF8");
responseToClient.write(utf8JsonString, 0, utf8JsonString.Length);

The first solution didn't work for me, I did this:

Gson gson = new GsonBuilder().disableHtmlEscaping().create();
String json = gson.toJson(objectToEncode);

Use the following code to encode

 response.setCharacterEncoding("UTF8"); // this line solves the problem
 response.setContentType("application/json");

Tags:

Java

Gson