[Zope-Checkins] SVN: Zope/branches/ajung-zpt-encoding-fixes/lib/python/Products/PageTemplates/ZopePageTemplate.py sniffEncoding() now returns 'utf-8' for xml and 'iso-8859-15' for html

Andreas Jung andreas at andreas-jung.com
Sun Dec 17 14:22:55 EST 2006


Log message for revision 71571:
  sniffEncoding() now returns 'utf-8' for xml and 'iso-8859-15' for html
  as encoding if the encoding could not be determined from the body text
  

Changed:
  U   Zope/branches/ajung-zpt-encoding-fixes/lib/python/Products/PageTemplates/ZopePageTemplate.py

-=-
Modified: Zope/branches/ajung-zpt-encoding-fixes/lib/python/Products/PageTemplates/ZopePageTemplate.py
===================================================================
--- Zope/branches/ajung-zpt-encoding-fixes/lib/python/Products/PageTemplates/ZopePageTemplate.py	2006-12-17 18:46:12 UTC (rev 71570)
+++ Zope/branches/ajung-zpt-encoding-fixes/lib/python/Products/PageTemplates/ZopePageTemplate.py	2006-12-17 19:22:55 UTC (rev 71571)
@@ -48,7 +48,7 @@
 if os.environ.has_key('ZPT_PREFERRED_ENCODING'):
     preferred_encodings.insert(0, os.environ['ZPT_PREFERRED_ENCODING'])
 
-def sniffEncoding(text, default_encoding='utf-8'):
+def sniffEncoding(text):
     """Try to determine the encoding from html or xml"""
 
     # sniff into the XML preamble
@@ -56,14 +56,15 @@
         mo = encoding_reg.search(text)
         if mo:
             return mo.group(1)
+        return 'utf-8'
    
     # sniff for <meta http-equiv="content-type" ...> header
     else:
         mo = charset_reg.search(text)
         if mo:
             return mo.groupdict()['charset']
+        return 'iso-8859-15'
 
-    return default_encoding
 
 class Src(Acquisition.Explicit):
     """ I am scary code """
@@ -197,7 +198,7 @@
         if not content_type in ('text/html', 'text/xml'):
             raise ValueError('Unsupported mimetype: %s' % content_type)
 
-        encoding = sniffEncoding(text, encoding)
+        encoding = sniffEncoding(text)
         self.pt_edit(text, content_type, encoding)
         return self.pt_editForm(manage_tabs_message='Saved changes')
 
@@ -304,7 +305,7 @@
         self.dav__simpleifhandler(REQUEST, RESPONSE, refresh=1)
         text = REQUEST.get('BODY', '')
         content_type = guess_type('', text) 
-        encoding = sniffEncoding(text, self.output_encoding)
+        encoding = sniffEncoding(text)
         if content_type == 'text/xml':
             self.output_encoding = 'utf-8'
         else:   
@@ -429,7 +430,7 @@
             content_type = headers['content_type']
         else:
             content_type = guess_type(filename, text) 
-        encoding = sniffEncoding(text, encoding)
+        encoding = sniffEncoding(text)
 
     else:
         if hasattr(text, 'read'):
@@ -440,7 +441,7 @@
                 content_type = headers['content_type']
             else:
                 content_type = guess_type(filename, text) 
-        encoding = sniffEncoding(text, encoding)
+        encoding = sniffEncoding(text)
 
     zpt = ZopePageTemplate(id, text, content_type, encoding, True)
     zpt.pt_setTitle(title, encoding)



More information about the Zope-Checkins mailing list