Merge pull request #63 from jsdalton/fix_unicode_error_in_html_output

Fix unicode error in html output
This commit is contained in:
Kenneth Reitz 2014-01-08 11:47:26 -08:00
commit 45121ddd65
3 changed files with 11 additions and 8 deletions

View File

@ -14,6 +14,7 @@ else:
from tablib.packages import markup from tablib.packages import markup
import tablib import tablib
import codecs
BOOK_ENDINGS = 'h3' BOOK_ENDINGS = 'h3'
@ -45,7 +46,9 @@ def export_set(dataset):
page.table.close() page.table.close()
stream.writelines(str(page)) # Allow unicode characters in output
wrapper = codecs.getwriter("utf8")(stream)
wrapper.writelines(unicode(page))
return stream.getvalue() return stream.getvalue()

View File

@ -67,7 +67,7 @@ class element:
def render( self, tag, single, between, kwargs ): def render( self, tag, single, between, kwargs ):
"""Append the actual tags to content.""" """Append the actual tags to content."""
out = "<%s" % tag out = u"<%s" % tag
for key, value in kwargs.iteritems( ): for key, value in kwargs.iteritems( ):
if value is not None: # when value is None that means stuff like <... checked> if value is not None: # when value is None that means stuff like <... checked>
key = key.strip('_') # strip this so class_ will mean class, etc. key = key.strip('_') # strip this so class_ will mean class, etc.
@ -75,16 +75,16 @@ class element:
key = 'http-equiv' key = 'http-equiv'
elif key == 'accept_charset': elif key == 'accept_charset':
key = 'accept-charset' key = 'accept-charset'
out = "%s %s=\"%s\"" % ( out, key, escape( value ) ) out = u"%s %s=\"%s\"" % ( out, key, escape( value ) )
else: else:
out = "%s %s" % ( out, key ) out = u"%s %s" % ( out, key )
if between is not None: if between is not None:
out = "%s>%s</%s>" % ( out, between, tag ) out = u"%s>%s</%s>" % ( out, between, tag )
else: else:
if single: if single:
out = "%s />" % out out = u"%s />" % out
else: else:
out = "%s>" % out out = u"%s>" % out
if self.parent is not None: if self.parent is not None:
self.parent.content.append( out ) self.parent.content.append( out )
else: else:

View File

@ -309,7 +309,7 @@ class TablibTestCase(unittest.TestCase):
def test_unicode_append(self): def test_unicode_append(self):
"""Passes in a single unicode character and exports.""" """Passes in a single unicode character and exports."""
new_row = ('å', 'é') new_row = (u'å', u'é')
data.append(new_row) data.append(new_row)
data.json data.json