Проблема декодирования кодирования при записи на лист 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.

Другие вопросы по тегам