`response.body` is always an encoded string (strictly speaking a bytearray) but I am not sure default decoding to UTF-8 is a good way to deal with this case, as most of the times when the response is not TextResponse it can't be parsed as html/xml, and in case it is xml/html parseable there is a bug in the code that detects response types.

My vote is to raise ValueError instead of forcing UTF-8 decoding.