[Zope3-Users] Re: why does HTTPResponse insist on a text mime
type for unicode?
Stefan Rank
stefan.rank at ofai.at
Fri Jun 30 05:20:36 EDT 2006
on 29.06.2006 20:58 Philipp von Weitershausen said the following:
> Stefan Rank wrote:
>> I am trying to make my content object IExternallyEditable, and I ran up
>> against the following code in
>> zope.publisher.http.HTTPResult._implicitResult (line 849ff)::
>>
>> if isinstance(body, unicode):
>> try:
>> if not content_type.startswith('text/'):
>> raise ValueError(
>> 'Unicode results must have a text content type,'
>> 'got %s.' % content_type)
>> except AttributeError:
>> raise ValueError(
>> 'Unicode results must have a text content type.')
>>
>> (note: the first raise originally did not give the feedback about the
>> received content type.)
>>
>> And my question is: Why? (do unicode results need to have a text/* type)
>
> Unicode can't be sent over the wire. Hence the publisher will have to
> encode it with a proper encoding (e.g. UTF-8) before transmitting the
> data.
yes.
I thought I could reuse the encoding selection logic already present in
_implicitResult (see the paragraph you snipped).
But, as you write at the end,
>> The reason AFAICT is that my content object just stores its source as
>> unicode object and simply provides that in its IReadFile adapter.
>
> IReadFile should really return byte strings, not unicode.
when used directly via the FTP publisher, using e.g. utf-8 is needed anyway.
Thanks.
About charset and http:
> When doing so, it will have to set the charset in the response.
> AFAIK only text/* responses are supposed to have a charset parameter,
> because everything else is just byte strings.
I tried to verify that: section 3.7.1 "Canonicalization and Text
Defaults" of rfc2068 (HTTP/1.1) is not really clear. The fourth
paragraph reads to me as if all media types might use explicit charset
if they want.
but nevermind.
cheers,
stefan
More information about the Zope3-users
mailing list