diff --git a/product/PortalTransforms/transforms/safe_html.py b/product/PortalTransforms/transforms/safe_html.py
index fe03b46e4ca38f40e95d9d00794902970e06a252..5e24393594c886eb57b6e944d5d6b047a3884701 100644
--- a/product/PortalTransforms/transforms/safe_html.py
+++ b/product/PortalTransforms/transforms/safe_html.py
@@ -1,5 +1,6 @@
+# -*- coding: utf-8 -*-
 import logging
-from sgmllib import SGMLParser
+from HTMLParser import HTMLParser
 import re
 from cgi import escape
 from zope.interface import implements
@@ -68,7 +69,7 @@ def decode_htmlentity(m):
    except ValueError:
       return entity_value
 
-class StrippingParser(SGMLParser):
+class StrippingParser(HTMLParser):
     """Pass only allowed tags;  raise exception for known-bad.
 
     Copied from Products.CMFDefault.utils
@@ -78,7 +79,7 @@ class StrippingParser(SGMLParser):
     from htmlentitydefs import entitydefs # replace entitydefs from sgmllib
 
     def __init__(self, valid, nasty, remove_javascript, raise_error):
-        SGMLParser.__init__( self )
+        HTMLParser.__init__( self )
         self.result = []
         self.valid = valid
         self.nasty = nasty
@@ -111,7 +112,7 @@ class StrippingParser(SGMLParser):
 
         self.result.append('&%s%s' % (name, x))
 
-    def unknown_starttag(self, tag, attrs):
+    def handle_starttag(self, tag, attrs):
         """ Delete all tags except for legal ones.
         """
 
@@ -145,7 +146,7 @@ class StrippingParser(SGMLParser):
             # omit tag
             pass
 
-    def unknown_endtag(self, tag):
+    def handle_endtag(self, tag):
         if self.nasty.has_key(tag) and not self.valid.has_key(tag):
             self.suppress = False
         if self.suppress: return