python - Python 源文件的有效编码
问题描述
我正在尝试找出 Python 源文件的可能编码的完整列表 - 即可以进入PEP 263编码规范的编码,例如# -*- encoding: foo -*-
.
此列表与“标准编码”codecs
下的库文档中给出的列表相同吗?如果没有,我在哪里可以找到实际列表?
(我知道该列表与 CPython 的/Lib/encodings/aliases.py中的唯一值集相同,或者等效地,/Lib/encodings/中的文件名集相同,但我再次不确定。)
解决方案
是的,Python 源文件的有效编码正是 中列出的那些codecs
,至少在 CPython 中是这样。
CPython 的标记器评估该值io.open(<FILE>, "r", -1, <ENCODING>, None, None, False).readline
,然后使用该函数读取行(来源:CPython 的这些行Parser/tokenizer.c
)。因此,open()
编码声明中也支持所支持的任何编码。
另请参阅:Python 3 源文件支持哪些文件编码?及其答案