For JSON, the mime type is officially application/json, as assigned by IANA.  text/json is an error, though we allow it because some clients misbehave.  So RFC 2616 section 3.7.1 doesn't apply here.  That said, the default charset for JSON is UTF-8 (RFC 4627 section 3), but I'll modify it to not decode it anyway and just parse the byte array, since JSON is required to always be encoded as Unicode, and whether it's UTF-8, UTF-16 or UTF-32 can be determined by inspecting the first two bytes of the body, as pointed out by RFC 4627 section 3, making the charset declaration superfluous.  This part of the spec is supported by Jackson.

For XML, well, there's a can of worms.  There's a whole RFC for it:

http://www.ietf.org/rfc/rfc3023.txt

My skimming seems to say:

* If it's a subtype of text, default to us-ascii (section 3.1).
* If it's a subtype of application, don't default to anything, but rather let the XML processor decide according to section 4.3.3 of the XML spec.  Basically, that means the XML processor should read it from the prolog, and then there's some other crazy auto detection rules that are irrelevant here.

As for text/plain, I think you're right, we should change it to ISO-8859-1 to be spec compliant.