Python采取time.strftime错误提示信息:‘locale‘codeccan‘tencodecharacter‘u5e74‘inposition2:encodingerror

原创
小哥 3年前 (2022-10-29) 阅读数 9 #大杂烩

目录

1.错误信息:

2.错误码:

3.解决方案:

1,第一个解决方案,修改locale配置

2第二种解决方案是使用占位符进行格式化。

4.解决方案的原则:


1.错误信息:

locale codec cant encode character \u5e74 in position 2: encoding error

翻译:“locale“找不到编解码器。2:编码错误中的字符“\u5e74“编码

2.错误码:

from datetime import datetime
nt=datetime.now()
print(nt.strftime(%Y年%m月%d日 %H时%M分%S秒))

3.解决方案:

1,第一个解决方案,修改locale配置

from datetime import datetime
import locale
locale.setlocale(locale.LC_CTYPE, chinese)
nt=datetime.now()
print(nt.strftime(%Y年%m月%d日 %H时%M分%S秒))

# 结果:2022年04月07日 15时45分46秒

2第二种解决方案是使用占位符进行格式化。

from datetime import datetime
nt=datetime.now()
print(nt.strftime(%Y{y}%m{m}%d{d} %H{h}%M{mm}%S{s}).format(y=年,m=月, d=日, h=时, mm=分, s=秒))

# 2022年04月07日 15时50分55秒

4.解决方案的原则:

1、“在Windows里, time.strftime 使用C运行时的多字节字符串函数 strftime ,则此函数必须首先基于当前locale对格式化字符串进行编码的配置(使用 PyUnicode_EncodeLocale )。“如果未设置locale单词,根据默认设置"C" locale,底层的 wcstombs 函数将使用latin-1编码(单字节编码)对格式化的字符串进行编码,这会导致多字节编码的字符串在编码时出错。

2因为如果你直接输入汉字就会出错,所以你可以绕过这个问题,输掉(可能)永远不会出错。ascii字符进入充当占位符,然后在格式化后用中文字符替换占位符。

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除