Проблема декодирования кодирования при записи на лист Excel в представлении Django
Я получаю ниже unicodedecodeerror, пытаясь написать, чтобы превзойти лист.
Тип исключения: UnicodeDecodeError Значение исключения:
Кодек 'ascii' не может декодировать байт 0xc3 в позиции 7: порядковый номер не находится в диапазоне (128) Строка, которая не может быть закодирована / декодирована, была: i> R<
Мои взгляды:
def file_write(input):
handle1=open('/tmp/filelog.txt','a')
handle1.write(str(input))
handle1.close()
workbook = xlsxwriter.Workbook('report.xlsx')
worksheet = workbook.add_worksheet()
teachertitle = "ÖĞR"
file_write(teachertitle)
worksheet.write("A4", teachertitle, titlescell)
workbook.close()
Странная вещь Функция file_write работает хорошо и записывает "ÖĞR" в локальный текстовый файл. Но когда я пытаюсь написать "ÖĞR", чтобы превзойти рабочую силу, это выдает ошибку.
Я также попробовал worksheet.write("A4", teachertitle.encode('utf-8'), titlecell), но проблема все еще остается.
У меня также есть # -- кодирование: utf-8 -- в начале views.py
2 ответа
Проблема скорее всего с вашим file_write
функция, где вам нужно установить кодировку файла, чтобы иметь возможность обрабатывать utf-8
, В python3 вы можете сделать это используя:
def file_write(input):
handle1=open('/tmp/filelog.txt','a', encoding='utf-8')
handle1.write(str(input))
handle1.close()
Наконец,
Решение:
worksheet.write ("A4", teachertitle.decode ('utf-8'), titlecell)
Расшифровка решила это. Как я понимаю, книге Excell нужно, чтобы строка была декодирована перед записью на лист Excell.