[Zope3-checkins] SVN: Zope3/trunk/src/zope/documenttemplate/ Fixed UnicodeEncodeError when uses non-ascii unicode string in template.

Yusei Tahara yusei at domen.cx
Thu Aug 31 12:32:05 EDT 2006


Log message for revision 69903:
  Fixed UnicodeEncodeError when uses non-ascii unicode string in template.
  

Changed:
  U   Zope3/trunk/src/zope/documenttemplate/pdocumenttemplate.py
  U   Zope3/trunk/src/zope/documenttemplate/tests/testdt_var.py

-=-
Modified: Zope3/trunk/src/zope/documenttemplate/pdocumenttemplate.py
===================================================================
--- Zope3/trunk/src/zope/documenttemplate/pdocumenttemplate.py	2006-08-31 15:49:10 UTC (rev 69902)
+++ Zope3/trunk/src/zope/documenttemplate/pdocumenttemplate.py	2006-08-31 16:32:03 UTC (rev 69903)
@@ -18,6 +18,7 @@
 from types import StringTypes, TupleType, ClassType
 ClassTypes = [ClassType]
 
+from zope.documenttemplate.ustr import ustr
 
 def safe_callable(ob):
     # Works with ExtensionClasses and Acquisition.
@@ -280,7 +281,7 @@
                     section = md[section]
                 else:
                     section = section(md)
-                section = str(section)
+                section = ustr(section)
             else:
                 # if
                 cache = {}

Modified: Zope3/trunk/src/zope/documenttemplate/tests/testdt_var.py
===================================================================
--- Zope3/trunk/src/zope/documenttemplate/tests/testdt_var.py	2006-08-31 15:49:10 UTC (rev 69902)
+++ Zope3/trunk/src/zope/documenttemplate/tests/testdt_var.py	2006-08-31 16:32:03 UTC (rev 69903)
@@ -126,6 +126,29 @@
         self.assertEqual(res2, expected2)
 
 
+    def testNonAsciiUnicode(self):
+
+        html = self.doc_class(
+            u"""
+            English  : Hello world!
+            Japanese : <dtml-var japanese>
+            Chinese  : <dtml-var chinese>
+            Korea    : <dtml-var korean>
+            """)
+
+        expected = (
+            u"""
+            English  : Hello world!
+            Japanese : \u3053\u3093\u306b\u3061\u306f \u4e16\u754c!
+            Chinese  : \u4f60\u597d\uff0c\u4e16\u754c\uff01
+            Korea    : \uc548\ub155, \uc138\uc0c1!
+            """)
+
+        self.assertEqual(html(japanese=u'\u3053\u3093\u306b\u3061\u306f \u4e16\u754c!',
+                              chinese=u'\u4f60\u597d\uff0c\u4e16\u754c\uff01',
+                              korean=u'\uc548\ub155, \uc138\uc0c1!'),
+                         expected)
+
 def test_suite():
     suite = unittest.TestSuite()
     suite.addTest(unittest.makeSuite(TestDT_Var))



More information about the Zope3-Checkins mailing list