Log message for revision 40954: fixes + more tests (Stefan Holek) Changed: U Zope/trunk/lib/python/ZPublisher/HTTPResponse.py U Zope/trunk/lib/python/ZPublisher/tests/testHTTPResponse.py
-=- Modified: Zope/trunk/lib/python/ZPublisher/HTTPResponse.py =================================================================== --- Zope/trunk/lib/python/ZPublisher/HTTPResponse.py 2005-12-21 15:01:15 UTC (rev 40953) +++ Zope/trunk/lib/python/ZPublisher/HTTPResponse.py 2005-12-21 15:03:12 UTC (rev 40954) @@ -333,13 +333,18 @@ self.body = body + isHTML = self.isHTML(self.body) if not self.headers.has_key('content-type'): - isHTML = self.isHTML(self.body) if isHTML: c = 'text/html; charset=%s' % default_encoding else: c = 'text/plain; charset=%s' % default_encoding self.setHeader('content-type', c) + else: + c = self.headers['content-type'] + if not 'charset=' in c: + c = '%s; charset=%s' % (c, default_encoding) + self.setHeader('content-type', c) # Some browsers interpret certain characters in Latin 1 as html # special characters. These cannot be removed by html_quote, Modified: Zope/trunk/lib/python/ZPublisher/tests/testHTTPResponse.py =================================================================== --- Zope/trunk/lib/python/ZPublisher/tests/testHTTPResponse.py 2005-12-21 15:01:15 UTC (rev 40953) +++ Zope/trunk/lib/python/ZPublisher/tests/testHTTPResponse.py 2005-12-21 15:03:12 UTC (rev 40954) @@ -74,7 +74,18 @@ response.appendHeader('XXX', 'foo') self.assertEqual(response.headers.get('xxx'), 'bar,\n\tfoo') + def test_CharsetNoHeader(self): + response = self._makeOne(body='foo') + self.assertEqual(response.headers.get('content-type'), 'text/plain; charset=iso-8859-15') + def test_CharsetTextHeader(self): + response = self._makeOne(body='foo', headers={'content-type': 'text/plain'}) + self.assertEqual(response.headers.get('content-type'), 'text/plain; charset=iso-8859-15') + + def test_CharsetApplicationHeader(self): + response = self._makeOne(body='foo', headers={'content-type': 'application/foo'}) + self.assertEqual(response.headers.get('content-type'), 'application/foo; charset=iso-8859-15') + def test_suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(HTTPResponseTests, 'test')) _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org http://mail.zope.org/mailman/listinfo/zope-checkins