Проблема декодирования кодирования при записи на лист Excel в представлении Django - PullRequest
0 голосов
/ 23 ноября 2018

Я получаю ниже unicodedecodeerror при попытке записать на лист Excell.

Тип исключения: UnicodeDecodeError Значение исключения:
Кодек 'ascii' не может декодировать байт 0xc3 в позиции 7: порядковый номер нев диапазоне (128) Строка, которая не может быть закодирована / декодирована, была: i> ����R <</p>

Строки моего просмотра:

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», чтобы превзойти workseeht, это выдает ошибку.

Я также попробовал worksheet.write («A4», teachertitle.encode ('utf-8'), titlecell), но проблема все еще продолжается.

У меня также есть # - - кодировка: utf-8 - - в начале views.py

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Наконец,

Решение:

worksheet.write ("A4", teachertitle.decode ('utf-8'), titlecell)

Расшифровка решила это.Как я понимаю, книге Excell необходимо, чтобы строка была декодирована перед записью на лист Excell.

0 голосов
/ 23 ноября 2018

Скорее всего, проблема связана с вашей функцией file_write, где вам нужно установить кодировку файла, чтобы иметь возможность обрабатывать utf-8.В python3 вы можете сделать это, используя:


def file_write(input):
    handle1=open('/tmp/filelog.txt','a'<b>, encoding='utf-8'</b>)
    handle1.write(str(input))
    handle1.close()
...