I don't think the 'charset' parameter works that way.
Either you use it, the way it's defined, or you don't.
charset is defined for text. it's not defined for other types.
application/* types can define a charset parameter any way they want.
(so, for that matter, could audio/*, video/*, or model/*, but
that seems less likely)
Trying it for *every* data format is a bad idea.
But trying it for most formats, or a class of formats, usually works.
well, we've had some trouble doing it even for text/* because
folks wanted to use character encoding schemes that didn't fit
with the MIME text/* model.
Keith