"When no explicit charset parameter is provided by the sender, media subtypes of the "text" type are defined to have a default charset value of "ISO-8859-1" when received via HTTP." - RFC 2616, "3.7.1 Canonicalization and Text Defaults"

The guessing is actually icky; this should look at the Charset header and do negotiation (IAW if the client requests UTF-8, this should be UTF-8), but ISO-8859-1 is the fallback charset if no header is present.