Thanks for the reply and for this great work. I managed to solve this problem, but I am not sure if this is the right approach. After looking at many parts of the application, I am using for client-side GWT, with RPC remote servlets. So many things could be causing this problem. But when I've tried using Gson on it's own, I had Arabic coming from the CouchDB dispalying the correct characters. Here's an example I did using Gson only:
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
Poet results = new Gson().fromJson(reader, Poet.class);
You see the InputStreamReader, if I don't pass the second argument, the charsetName which is "UTF-8", I get Arabic strings with these funny shapes, but if I do, I get them displayed correctly and this is with the same data I've got saved on the db.
I've checkedout LightCouch source code from Github and modified for example on CouchDbClientBase on line 166, basically the method that is in use for getting data. Inside that method, the InputStreamReader in use I had to pass to it the charsetName which is "UTF-8", and all characters now start to come displaying correctly.
So I don't know if this is the right approach, but by doing that this has solved my problem for now.
Thanks again for this great work.