Jersey should always produce utf-8 by default, sounds like the problem is that your client isn’t interpreting it correctly (the xml declaration doesn’t “make” it utf-8, just tells the client how to parse it).
What client are you seeing these problems with?
Valid JSON is only supposed to be Unicode (utf-8/16/32); parsers should be able to detect the encoding automatically (of course, some don’t), so there is no encoding declaration in JSON.
You can add it to the Content-Type like so:
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")