I think you get Bernd wrong: The problem was, that Bernd wanted naviserver to return the content in iso-8859-1 encoding. So the number of bytes and the number of characters should be equal. The Content-Length has to be the number of bytes returned, but naviserver computed the value with string bytelength of an utf-8 string, which was, in Bernds, case greater than the bytelength of the iso8859-1 string.
So it seems that chunked encoding is the best possible solution. But as Gustav said, chunked transfer-encoding is only part of HTTP/1.0 and some clients don't understand it. Btw: Aolserver doesn't encode "on-the-fly", but in memory. So they know the content-length before the content is sent to the recipient. Michael