Openpyxl:strftime()方法报错UnicodeEncodeError: 'locale' codec can't encode character '\u5e74' in position 2: encoding error

 

 

根据错误可以看出,没有执行成功的原因是"%Y年%m月%d日 %H时%M分%S秒"中包含了中文,中文没有转化为unicode编码失败的。

首先我们先来了解下strftime()

Python time strftime()方法

描述

Python time strftime() 函数接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定。

语法

strftime()方法语法:

time.strftime(format[, t])

format -- 格式字符串。

t -- 可选的参数t是一个struct_time对象。

 

 

解决方法:

方法一:

import local

locale.setlocale(locale.LC_CTYPE,'chinese')

备注:“在Windows里,time.strftime使用C运行时的多字节字符串函数strftime,这个函数必须先根据当前locale配置来编码格式化字符串(使用PyUnicode_EncodeLocale)。”如果不设置好locale的话,根据默认的"C" locale,底层的wcstombs函数会使用latin-1编码(单字节编码)来编码格式化字符串,导致多字节编码的字符串在编码时出错。

 

方法二:

通过format函数对中文格式字符

ws['A3']=time.strftime("%Y{Y}%m{m}%d{d} %H{H}%M{M}%S{S}",time.localtime()).format(Y='年',m='月',d='日',H='时',M='分',S='秒')

 

 

两种方法输出结果一样,问题解决了:

 

posted @ 2021-04-27 12:03  你的小鱼鱼呀  阅读(725)  评论(0)    收藏  举报