1 回答

TA贡献1818条经验 获得超8个赞
解决方案:您需要设置LC_CTYPE
为UTF-8
以下更多方框图字符的示例表明在字符串中进行了一些字符转换datefmt
(类似于 Windows 命令tree
与 之间tree /A
的区别)。
# -*- coding: utf-8 -*-
import time, locale
t = time.localtime()
datefmt = '%Y/%m/%d ─│┌┐└┘├┤┬┴┼═║╔╗╚╝╠╣╦╩╬ %H:%M:%S'
print( '\n datefmt:', datefmt)
print( '\nLC_CTYPE:', locale.getlocale(category=locale.LC_CTYPE) )
print( 'strftime:', time.strftime(datefmt, t) )
locale.setlocale(locale.LC_CTYPE, (locale.getlocale()[0], '1252'))
print( '\nLC_CTYPE:', locale.getlocale(category=locale.LC_CTYPE) )
print( 'strftime:', time.strftime(datefmt, t) )
locale.setlocale(locale.LC_CTYPE, (locale.getlocale()[0], 'utf8'))
print( '\nLC_CTYPE:', locale.getlocale(category=locale.LC_CTYPE) )
print( 'strftime:', time.strftime(datefmt, t) )
输出:.\SO\63472673.py
datefmt: %Y/%m/%d ─│┌┐└┘├┤┬┴┼═║╔╗╚╝╠╣╦╩╬ %H:%M:%S
LC_CTYPE: ('Czech_Czechia', '1250')
strftime: 2020/08/20 ¦--¬L-++T++=¦-¬L-¦¦T¦+ 19:29:14
LC_CTYPE: ('Czech_Czechia', '1252')
strftime: 2020/08/20 -¦+++++¦--+-¦++++¦¦--+ 19:29:14
LC_CTYPE: ('Czech_Czechia', 'utf8')
strftime: 2020/08/20 ─│┌┐└┘├┤┬┴┼═║╔╗╚╝╠╣╦╩╬ 19:29:14
不幸的是,我在 Python 源代码中找不到那个字符翻译(可以看到(我的本地)代码页有一个错误1250:字符─和│被翻译为¦和-,分别以相反的顺序......
添加回答
举报