[Zope3-checkins]
SVN: Zope3/branches/Zope-3.1/src/zope/publisher/http.py
use the new MIME content-type parser to check if a charset
needs to be
Fred L. Drake, Jr.
fdrake at gmail.com
Mon Aug 1 11:13:09 EDT 2005
Log message for revision 37624:
use the new MIME content-type parser to check if a charset needs to be
added and to perform the add properly
(backported from trunk revision 37619)
Changed:
U Zope3/branches/Zope-3.1/src/zope/publisher/http.py
-=-
Modified: Zope3/branches/Zope-3.1/src/zope/publisher/http.py
===================================================================
--- Zope3/branches/Zope-3.1/src/zope/publisher/http.py 2005-08-01 15:11:32 UTC (rev 37623)
+++ Zope3/branches/Zope-3.1/src/zope/publisher/http.py 2005-08-01 15:13:08 UTC (rev 37624)
@@ -23,6 +23,7 @@
from zope.interface import implements
+from zope.publisher import contenttype
from zope.publisher.interfaces.http import IHTTPCredentials
from zope.publisher.interfaces.http import IHTTPRequest
from zope.publisher.interfaces.http import IHTTPApplicationRequest
@@ -715,11 +716,16 @@
self._charset = charset
def _updateContentType(self):
- if self._charset is not None:
+ if self._charset:
ctype = self.getHeader('content-type', '')
- if ctype.startswith("text") and "charset" not in ctype:
- self.setHeader('content-type',
- ctype + ";charset=" + self._charset)
+ if ctype.lower().startswith('text'):
+ ctinfo = contenttype.parseOrdered(ctype)
+ for param, value in ctinfo[2]:
+ if param == "charset":
+ break
+ else:
+ ctinfo[2].append(("charset", self._charset))
+ self.setHeader('content-type', contenttype.join(ctinfo))
def setCharsetUsingRequest(self, request):
'See IHTTPResponse'
More information about the Zope3-Checkins
mailing list