在Django视图中写入excell工作表时编码解码问题

时间:2018-11-23 14:35:26

标签: python django character-encoding django-views django-excel

尝试写入excell工作表时出现unicodedecodeerror以下情况。

  

异常类型:UnicodeDecodeError   异常值:
  'ascii'编解码器无法解码位置7的字节0xc3:序数不在范围内(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”写到excell workseeht时,会引发错误。

我也尝试了worksheet.write(“ A4”,Teachertitle.encode('utf-8'),titlescell),但问题仍然存在。

在views.py的开头,我也有#--编码:utf-8--

2 个答案:

答案 0 :(得分:0)

您的file_write函数很可能是问题所在,您需要在其中设置文件的编码以能够处理utf-8。在python3中,您可以使用:


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

答案 1 :(得分:0)

最后,

解决方案是:

  

worksheet.write(“ A4”,Teachertitle.decode('utf-8'),titlescell)

解码解决了。据我了解,excell工作簿需要在写入excell工作表之前对字符串进行解码。