Commit 29f0205d authored by Andreas Jung's avatar Andreas Jung

backported woraround for unicode issue in

zope.tal.xmlparser.XMLParser.parseString()
parent 892a3e8c
......@@ -26,7 +26,30 @@ misc_ = {}
# available in sys.modules
import ZTUtils
def initialize(context):
# Import lazily, and defer initialization to the module
import ZopePageTemplate
ZopePageTemplate.initialize(context)
# HACK!!!
# We need to monkeypatch the parseString method of the Zope 3
# XMLParser since the internal ZPT representation uses unicode
# however the XMLParser (using Expat) can only deal with standard
# Python strings. However we won't and can't convert directly
# to UTF-8 within the ZPT wrapper code.
# Unicode support for (this issue) should be directly added
# to zope.tal.xmlparser however this requires a new Zope 3.3.X
# release. For now we fix it here.
from zope.tal.xmlparser import XMLParser
import logging
def parseString(self, s):
if isinstance(s, unicode):
s = s.encode('utf-8')
self.parser.Parse(s, 1)
XMLParser.parseString = parseString
logging.info('Monkeypatching zope.tal.xmlparser.XMLParser.parseString()')
......@@ -196,12 +196,14 @@ class ZopePageTemplateFileTests(ZopeTestCase):
zpt = self._put(xml_iso_8859_15)
self.assertEqual(zpt.output_encoding, 'utf-8')
self.assertEqual(zpt.content_type, 'text/xml')
result = zpt.pt_render() # should not raise an exception
def testPutXMLUTF8(self):
""" XML: use always UTF-8 als output encoding """
zpt = self._put(xml_utf8)
self.assertEqual(zpt.output_encoding, 'utf-8')
self.assertEqual(zpt.content_type, 'text/xml')
result = zpt.pt_render() # should not raise an exception
class ZPTRegressions(unittest.TestCase):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment