diff -r 1aa54df37ae2 google/appengine/ext/bulkload/__init__.py --- a/google/appengine/ext/bulkload/__init__.py Mon Apr 21 11:16:01 2008 -0700 +++ b/google/appengine/ext/bulkload/__init__.py Mon Apr 21 13:25:54 2008 -0700 @@ -348,9 +348,21 @@ class BulkLoad(webapp.RequestHandler): except KeyError: output.append('Error: no Loader defined for kind %s.' % kind) return (httplib.BAD_REQUEST, ''.join(output)) + + def unicode_csv_reader(unicode_csv_data, dialect=csv.excel, **kwargs): + # csv.py doesn't do Unicode; encode temporarily as UTF-8: + csv_reader = csv.reader(utf_8_encoder(unicode_csv_data), + dialect=dialect, **kwargs) + for row in csv_reader: + # decode UTF-8 back to Unicode, cell by cell: + yield [unicode(cell, 'utf-8') for cell in row] + + def utf_8_encoder(unicode_csv_data): + for line in unicode_csv_data: + yield line.encode('utf-8') buffer = StringIO.StringIO(data) - reader = csv.reader(buffer, skipinitialspace=True) + reader = unicode_csv_reader(buffer, skipinitialspace=True) entities = [] line_num = 1