diff --git a/src/DocumentTemplate/DT_If.py b/src/DocumentTemplate/DT_If.py index 4f007ff..ccf101d 100644 --- a/src/DocumentTemplate/DT_If.py +++ b/src/DocumentTemplate/DT_If.py @@ -137,7 +137,8 @@ class Unless(object): name = 'unless' blockContinuations = () - def __init__(self, blocks): + def __init__(self, blocks, encoding=None): + self.encoding = encoding tname, args, section = blocks[0] args = parse_params(args, name='', expr='') name, expr = name_param(args, 'unless', 1) diff --git a/src/DocumentTemplate/DT_Try.py b/src/DocumentTemplate/DT_Try.py index 0e4b89f..3c169a4 100644 --- a/src/DocumentTemplate/DT_Try.py +++ b/src/DocumentTemplate/DT_Try.py @@ -90,11 +90,12 @@ class Try(object): finallyBlock = None elseBlock = None - def __init__(self, blocks): + def __init__(self, blocks, encoding=None): tname, args, section = blocks[0] self.args = parse_params(args) self.section = section.blocks + self.encoding = encoding # Find out if this is a try..finally type if len(blocks) == 2 and blocks[1][0] == 'finally': diff --git a/src/DocumentTemplate/tests/testDTMLUnicode.py b/src/DocumentTemplate/tests/testDTMLUnicode.py index e7df550..6945178 100644 --- a/src/DocumentTemplate/tests/testDTMLUnicode.py +++ b/src/DocumentTemplate/tests/testDTMLUnicode.py @@ -42,7 +42,9 @@ def make(*args): doc_class = property(_get_doc_class,) def _recode(self, string): - return string.decode("utf-8").encode(self.recode_to) + if isinstance(string, six.binary_type): + string = string.decode('UTF-8') + return string.encode(self.recode_to) def testAA(self): html = self.doc_class('')