diff options
| author | Christophe Simonis <chs@odoo.com> | 2016-04-25 13:33:01 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2016-04-25 13:33:01 +0200 |
| commit | 4d337f72ed59d1e5260fa2bb4f3d238e6ed11415 (patch) | |
| tree | 27c372b98741474c11d4867f90e4e94b6af05cde /addons/base_import/models.py | |
| parent | 7b1c208d5fba483b0ffa95319ebda323bc20ceb0 (diff) | |
| parent | ac7beb3d7bd356042f046d7fc22ad261eedf33e7 (diff) | |
[MERGE] forward port of branch 9.0 up to ac7beb3
Diffstat (limited to 'addons/base_import/models.py')
| -rw-r--r-- | addons/base_import/models.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/addons/base_import/models.py b/addons/base_import/models.py index 91d54b64588..2703dd218aa 100644 --- a/addons/base_import/models.py +++ b/addons/base_import/models.py @@ -250,15 +250,21 @@ class ir_import(orm.TransientModel): :throws csv.Error: if an error is detected during CSV parsing :throws UnicodeDecodeError: if ``options.encoding`` is incorrect """ + csv_data = record.file + + # TODO: guess encoding with chardet? Or https://github.com/aadsm/jschardet + encoding = options.get('encoding', 'utf-8') + if encoding != 'utf-8': + # csv module expect utf-8, see http://docs.python.org/2/library/csv.html + csv_data = csv_data.decode(encoding).encode('utf-8') + csv_iterator = csv.reader( - StringIO(record.file), + StringIO(csv_data), quotechar=str(options['quoting']), delimiter=str(options['separator'])) - # TODO: guess encoding with chardet? Or https://github.com/aadsm/jschardet - encoding = options.get('encoding', 'utf-8') return ( - [item.decode(encoding) for item in row] + [item.decode('utf-8') for item in row] for row in csv_iterator if any(x for x in row if x.strip()) ) |
