[Erp5-report] r41862 kazuhiko - /erp5/trunk/products/PortalTransforms/transforms/safe_html.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Dec 29 15:40:42 CET 2010


Author: kazuhiko
Date: Wed Dec 29 15:40:41 2010
New Revision: 41862

URL: http://svn.erp5.org?rev=41862&view=rev
Log:
handle original character set.

Modified:
    erp5/trunk/products/PortalTransforms/transforms/safe_html.py

Modified: erp5/trunk/products/PortalTransforms/transforms/safe_html.py
URL: http://svn.erp5.org/erp5/trunk/products/PortalTransforms/transforms/safe_html.py?rev=41862&r1=41861&r2=41862&view=diff
==============================================================================
--- erp5/trunk/products/PortalTransforms/transforms/safe_html.py [utf8] (original)
+++ erp5/trunk/products/PortalTransforms/transforms/safe_html.py [utf8] Wed Dec 29 15:40:41 2010
@@ -164,8 +164,10 @@ class StrippingParser(HTMLParser):
 
     def handle_data(self, data):
         if self.suppress: return
-        if data:
-            self.result.append(escape(data))
+        data = escape(data)
+        if self.original_charset and isinstance(data, str):
+            data = data.decode(self.original_charset)
+        self.result.append(data)
 
     def handle_charref(self, name):
         if self.suppress: return
@@ -252,6 +254,8 @@ class StrippingParser(HTMLParser):
                  k = len(self.rawdata)
              data = self.rawdata[i+9:k]
              j = k+3
+             if self.original_charset and isinstance(data, str):
+                 data = data.decode(self.original_charset)
              self.result.append("<![CDATA[%s]]>" % data)
         else:
             try:
@@ -278,11 +282,10 @@ def scrubHTML(html, valid=VALID_TAGS, na
                              default_encoding=default_encoding)
     parser.feed(html)
     parser.close()
-    if parser.original_charset:
-      result = parser.getResult().decode(parser.original_charset)\
-                                                      .encode(default_encoding)
-      return result
-    return parser.getResult()
+    result = parser.getResult()
+    if parser.original_charset and isinstance(result, str):
+        result = result.decode(parser.original_charset).encode(default_encoding)
+    return result
 
 class SafeHTML:
     """Simple transform which uses CMFDefault functions to



More information about the Erp5-report mailing list