我想创建一个“unicode 三明治”,其中包含一些日期/时间值并且与语言环境无关。对于初学者来说,unicode 三明治一词描述了从字节转换为 unicode 并返回到程序边界的做法,即外部的字节和内部的 unicode。
今天早上我观看了Ned Batchelder 关于 unicode 的精彩视频,并试图将我的一些代码转换为符合他的明智建议。
我遇到的问题是我无法确定如何确定由返回的字符串str(date)
或其等价物的编码。我的想法是做这样的事情,为了清楚起见有点冗长:
date_str_encoding = some_magical_method_I_have_yet_to_discover()
date = datetime.datetime(2013, 10, 16).date()
date_str = date.strftime('%A %B %d, &Y') # perhaps 'Sábado Octubre 19, 2013'
date_unicode = date_str.decode(date_str_encoding)
Ned 的 unicode “生活事实”之一是“你无法推断字节的编码。你必须被告知,否则你必须猜测。” 不幸的是,我在 Python 文档中找不到日期时间的特定细节。
另一个 SO 帖子提到了 locale.getlocale() 的使用,但对我来说返回 (None, None)。
如何在运行时可靠地发现 Python 日期字符串的编码?